printf格式化输出

时间:2022-01-07 21:53:06

%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-记数法

宽字符

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