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