ordinary multibyte characters are copied unchanged to the output
conversion specifications are begun with % and consist of
h short l,L long
d int *, decimal integer
i int *, integer in octal (leading 0) or hexadecimal
(leading 0x or 0X)
o int *, octal integer
x int *, hexadecimal integer
u unsigned int *, unsigned decimal integer
c char *, next input characters (default 1), whitespace
is not skipped (to get next non-whitespace character,
use %1s)
s char *, character string, writes string to argument
and adds '\0' at the end
e,f,g float *, floating-point number (sign, decimal point, and
exponent optional)
% literal '%', no assignment made