Printf() format:
----------------


  % [flags] [width] [.prec] [F|N|h|l|L] type_char

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

After the % come the following, in this order:

  Component   What It Controls or Specifies
 
  [flags]    (Optional) Flag character(s)
                Output justification, numeric signs, decimal
                points, trailing zeros, octal and hex prefixes
  [width]    (Optional) Width specifier
                Minimum number of characters to print, padding
                with blanks or zeros
  [.prec]    (Optional) Precision specifier
                Maximum number of characters to print; for
                integers, minimum number of digits to print
  [F|N|h|l|L](Optional) Input size modifier
  type_char  (Required) Conversion type character


  Flag  What It Means
 
    -   Left-justifies the result, pads on the right with blanks.
        If not given, right-justifies result, pads on left with zeros
        or blanks.
       
    +   Signed conversion results always begin with a plus (+) or
        minus (-) sign.
       
  blank If value is non-negative, the output begins with a blank
        instead of a plus; negative values still begin with a minus.
       
    #   Specifies that arg is to be converted using an "alternate form"

Plus (+) takes precedence over blank ( ) if both are given.


 [width]  How Output Width Is Affected

   n      At least n characters are printed.
          If the output value has less than n characters, the
          output is padded with blanks (right-padded if "-" flag
          is given, left-padded otherwise).
   0n     At least n characters are printed.
          If the output value has less than n characters, it is
          filled on the left with zeros.
   *      The argument list supplies the width specifier, which
          must precede the actual argument being formatted.
   0*     At least * characters are printed.
          If the output value has less than * characters, it is
          filled on the left with zeros.
          The argument list supplies the width specifier, which
          must precede the actual argument being formatted.


 [.prec]  How Output Precision Is Affected

 (none)   Precision set to default:
            = 1 for d, i, o, u, x, X types
            = 6 for e, E, f types
            = All significant digits for g, G types
            = Print to first null character for s types
            = No effect on c types
   .0     For d, i, o, u, x types, precision set to default;
          for e, E, f types, no decimal point is printed.
   .n     n characters or n decimal places are printed.
          If the output value has more than n characters, the
          output might be truncated or rounded. (Whether this
          happens depends on the type character.)
    *     The argument list supplies the precision specifier,
          which must precede the actual argument being formatted.


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


 [default] = useless piece of shit that does not affect anything


 Type                 
 Char  Expected Input  Format of output

 Numerics

   d   Integer         Signed decimal integer
   i   Integer         Signed decimal integer
   o   Integer         Unsigned octal integer
   u   Integer         Unsigned decimal integer
   x   Integer         Unsigned hexadecimal int (with a, b, c, d, e, f)
   X   Integer         Unsigned hexadecimal int (with A, B, C, D, E, F)
   f   Floating point  Signed value of the form [-]dddd.dddd.
   e   Floating point  Signed value of the form [-]d.dddd or e[+/-]ddd
   g   Floating point  Signed value in either e or f form, based on
                       given value and precision. Trailing zeros and
                       the decimal point are printed if necessary.
   E   Floating point  Same as e; with E for exponent.
   G   Floating point  Same as g; with E for exponent if e format used

 Characters

   c   Character       Single character
   s   String pointer  Prints characters until a null-terminator is
                       pressed or precision is reached
   %   None            Prints the % character

 Pointers

   n   Pointer to int  Stores (in the location pointed to by the input
                       argument) a count of the chars written so far.
   p   Pointer         Prints the input argument as a pointer; format
                       depends on which memory model was used. It will
                       be either XXXX:YYYY or YYYY (offset only).
