`printf` `scanf` Format Quick Lookup

一、格式说明符

格式符printf 参数类型scanf 参数类型说明
%dintint*十进制有符号整数
%uunsigned intunsigned int*十进制无符号整数
%ounsigned intunsigned int*八进制
%xunsigned intunsigned int*十六进制(小写)
%Xunsigned intunsigned int*十六进制(大写)
%fdoublefloat*浮点数(printf 用 %f/%lf 均可,scanf 必须 %f 给 float,%lf 给 double)
%edoublefloat*科学计数法(小写 e)
%gdoublefloat*自动选 %f 或 %e(较短)
%ccharchar*单个字符
%sconst char*char[]字符串(遇空白停止)
%pconst void*void**指针地址(十六进制)
%nint*int*写入已输出/读取的字符数
%%--输出字面量 %

二、长度修饰符

修饰符适用类型示例格式
hhsigned char / unsigned char%hhd, %hhu
hshort / unsigned short%hd, %hu
llong / unsigned long%ld, %lu
lllong long / unsigned long long%lld, %llu
Llong double%Lf, %Le
zsize_t%zd
tptrdiff_t%td

三、printf常用标志

标志作用示例(%后加标志)
-左对齐(默认右对齐)%-10d
+强制显示正负号%+d
空格正数前加空格% d
#八进制前加0,十六进制加0x/0X,浮点数强制小数点%#o, %#x, %#f
0用 0 填充宽度(而非空格)%08d

四、宽度与精度

格式含义示例
%最小宽度d输出至少占 n 位,不足补空格%5d
%.精度f小数位数(浮点)/ 最大字符数(字符串)/ 最少数字位数(整数)%.2f, %.5s
%*.*f宽度和精度由参数提供printf("%*.*f", w, p, val);

五、scanf 特殊用法

用法说明示例
*抑制赋值(跳过)scanf("%*d %d", &n);
[集合]只读指定字符集%[a-z](读小写字母)
[^]读直到遇到某字符%[^,](读逗号前)
comments powered by Disqus
冷暖世情,比比如畫。
Built with Hugo