The format specifiers for general, character, and numeric types have the following syntax: %<flags><width><.precision><conversion>
Flags (in any order)
- = left justification.
+ = always print with a sign (otherwise only - is printed).
space = if first character is not a sign, then a space is printed instead.
Only one of + or space can be specified.
0 = in numeric output, specifies padding with 0.
Width and precision
number = minimum field width. A greater width is used if necessary, padded otherwise.
precision = maximum number of characters to be printed from a string, or the number
of decimal places for float and double, or the minimum number
of digits for an integer.
A width or precision may be specified by *, which takes its value from the next
argument.