===============================================================================
                          scanf  CONVERSION CHARACTERS
===============================================================================
CHARACTERS                           ACTION  
----------    -----------------------------------------------------------------
    d         The value to be read is expressed in decimal notation; the       
              corresponding argument is a pointer to an int unless the l
              modifier is used, in which case the argument is a pointer to        
              a long, or the h modifier is used, in which case the argument
              is a pointer to a short

    o         The value to be read is expressed in octal notation; the       
              corresponding argument is a pointer to an int unless the l
              modifier is used, in which case the argument is a pointer to        
              a long, or the h modifier is used, in which case the argument
              is a pointer to a short

    x         The value to be read is expressed in hexadecimal notation; the       
              corresponding argument is a pointer to an int unless the l
              modifier is used, in which case the argument is a pointer to        
              a long, or the h modifier is used, in which case the argument
              is a pointer to a short

D, O, or X    These conversion characters are equivalent to the format            
              characters ld, lo, and lx, respectively.  They indicate that the
              input value is a long integer expressed in the indicated base; the
              corresponding argument is a pointer to a long int
 
    f         The value to be read is expressed in floating point notation; the   
              value may be optionally preceded by a sign and may optionally
              be expressed in exponential notation; the corresponding argument
              is a pointer to a float, unless an l precedes the f, in which       
              case it is a pointer to a double
 
    e         This format character is identical to the f format described 
              directly above                                                      
 
 F or E       These conversion characters are equivalent to the lf or le format   
              characters.  The corresponding argument is a pointer to a double  
 
    c         The value to be read is a single character; the next character that 
              appears on the input is read with this format, even if it is a      
              space, tab, newline, or form feed character; the corresponding 
              argument is a pointer to a character; an optional count before the
              c specifies the number of characters to be read; in such a case,    
              the corresponding argument is a pointer to a character array
 
    s         The value to be read is a sequence of characters; the sequence      
              begins with the first non-white space character and is terminated   
              by the the first white space character (white space characters are:
              a blank space, a tab '\t', a newline '\n', or a form feed '\f');    
              the corresponding argument is a pointer to a character array, which 
              must contain enough characters to contain the characters that are
              read plus the null character that is added to the end of the string
              by routine; if a precision modifier is supplied, then the specified 
              number of characters is read, unless a white space character is
              encountered first
 
  [...]       Characters enclosed within brackets indicate that a character
              string is to be read, as in the s conversion character; the 
              characters within the brackets indicate the permissible             
              characters that are to be contained in the string; if any character
              other than that specified in the brackets is encountered, then the
              string will be terminated; the sense of how these characters are
              treated may be changed by placinga '^' as the first character
              inside the brackets; in such a case, the subsequent characters are
              taken to be the ones that will terminate the string, that is, if any
              of the subsequent characters is found on the input, then the
              string will be terminated
-------------------------------------------------------------------------------
