scanf() format:
---------------

  % [*] [width] [F|N|h|l|L] type_char

Each format specifier begins with the percent character (%).

NOTES :
  - 'D I O U' are treated as 'd i o u' since QLIB is a 32bit enviroment.
  - strings may contain whitespaces and should be stopped with \n or \0
  - if you are crazy enough to use scanf() I suggest you place " \n"
    at the end of your format string to help scanf() resync it self.
  - if you are smart you will use gets()/fgets() - sscanf() instead of
    scanf().

After the % come the following, in this order:

  Component   What It Is/Does
 
  [*]        (Optional) Assignment-suppression character
              Suppresses assignment of the next input field.
  [width]    (Optional) Width specifier
              Specifies maximum number of characters to read; fewer
              characters might be read if the ...scanf function encounters
              a whitespace or unconvertible character.
  [F|N|h|l|L](Optional) Argument-type modifier
              Overrides default type of argument
  type_char  (Required) Type character



Modifier Type of arg  arg is interpreted as ...  size ...

   F     p            A far pointer              64bit
   N     p            A near pointer             32bit [default]
                                                
   h     d i o u x X  A short int                16bit
   H     d i o u x X  A super short int          8bit  [QLIB only]
   l     d i o u x X  A long int                 32bit [default]
         e E f g G    A double                   64bit
   L     e E f g G    A long double              80bit



  Type                     
  Char  Expected input      Type of argument

 Numerics

  d     Decimal integer     Pointer to int (int *arg)
  e, E  Floating point      Pointer to float (float *arg)
  f     Floating point      Pointer to float (float *arg)
  g, G  Floating point      Pointer to float (float *arg)
  o     Octal integer       Pointer to int (int *arg)
  i     Decimal, octal, or  Pointer to int (int *arg)
        hexadecimal integer
  u     Unsigned decimal    Pointer to unsigned int
        integer             (unsigned int *arg)
  x     Hexadecimal integer Pointer to int (int *arg)
  X     Hexadecimal integer Pointer to int (int *arg)

 Characters

  s     Character string    Pointer to array of chars (char arg[])
  c     Character           Pointer to char (char *arg) if a field width
                            W is given along with the c-type character
                            (such as %5c)
                            Pointer to array of W chars (char arg[W])
  %     % character         No conversion done; the % is stored

 Pointers

  n                         Pointer to int (int *arg). The number
                            of characters read successfully up to %n
                            is stored in this int.
  p     Hexadecimal form    Pointer to an object (far* or near*)
        YYYY:ZZZZ or        %p conversions default to the pointer
        ZZZZ                size native to the memory model
