printf格式化输出
%c:字符
%i:整数(老)
%d:整数
%ld:长整型(long int)
%Ld:长整型(long long int)
%hd:短整形(short int)
%e:浮点数、e-记数法(指数形式)
%E:浮点数、E-记数法(指数形式)
%f:浮点数(%nf,n表示小数点后n位)
%g、%G:浮点数(自动选择合适的格式)
%o:八进制数
%s:字符串
%S :宽字符(=%ws)
%x:十六进制数
%X:大写十六进制
%p:指针
%u:无符号整数
%%:打印百分号
%zu:size_t
%a: 浮点数、十六进制、p-记数法
%A:大写浮点数、十六进制、P-记数法
格式化输出#
%#x 十六进制
%#b 二进制
%#o 8进制
宽字符
wchar_t w = 'A';
printf("wchar_t: %C\n", w);
# ./a.out
wchar_t: A
宽字节
http://blog.csdn.net/zhangxuechao_/article/details/71188953
二进制、八进制
http://blog.csdn.net/zhangxuechao_/article/details/70919914
p-记数法
float f = 3.1415926;
printf("p: %a\n", f);
printf("P: %a\n", f);
# ./a.out
p: 0x1.921fb4p+1
P: 0x1.921fb4p+1
%e、%f、%g
float f = 3.1415926;
printf("e: %e\n", f);
printf("f: %f\n", f);
printf("g: %g\n", f);
# ./a.out
e: 3.141593e+00
f: 3.141593
g: 3.14159
可变参数输出
printf("%*.*s\n", m, n, str);
m :总宽度
n:输出个数
char *str = "hello";
printf("%*.*s\n", 4, 2, str);
# ./a.out
he