【c】printf()中%占位符的选取和使用: %d, %s等
格式占位符速通
格式占位符 %
- 格式占位符 % 是在 C/C++ 语言中格式输入函数,如 scanf、printf 等函数中使用。
- 其意义就是起到格式占位的意思,表示在该位置有输入或者输出。
规定符
- %d 十进制有符号整数
- %u 十进制无符号整数
- %f 浮点数 (默认6位小数输出)
- %s 字符串
- %c 单个字符
- %p 指针的值
- %e 指数形式的浮点数
- %x, %X 无符号以十六进制表示的整数
- %o 无符号以八进制表示的整数
- %g 把输出的值按照 %e 或者 %f 类型中输出长度较小的方式输出
- %p 输出地址符
- %lu 32位无符号整数
- %llu 64位无符号整数
- %% 输出百分号字符本身。
一些混用注意
- printf() 的 double 和 float:
- 可以混用 %f 占位符
- double 可以额外用 %lf。
- scanf() 的 double 和 float:
- double 必须用 %lf,float 必须用 %f
- 不能混用。
- printf() 的 int 和 unsigned int:
- 可以混用 %d(或%i)和 %u(或%ui)
- 但建议 int 用 %d(或%i),unsigned int 用 %u(或%ui)
- 其它类型同理<如%ul等>
除了格式化说明符之外的一些选项控制
除了格式化说明符之外,printf() 函数还支持一些标志和选项,用于控制输出的精度、宽度、填充字符和对齐方式等。例如:
- %-10s:左对齐并占用宽度为 10 的字符串;
- %5.2f:右对齐并占用宽度为 5,保留两位小数的浮点数;
- %#x:输出带有 0x 前缀的十六进制数。
printf()函数
printf()格式
- printf() 函数的声明:
int printf(const char *format, ...)
- printf() 函数的调用格式为:
printf("<格式化字符串>", <参量表>);
- format 标签属性是
%[flags][width][.precision][length]specifier
- 完整格式:<
% + 格式 + 宽度 + . + 精度 + 长度类型 + 字母
>- 注意:宽度是总的占位长度,含精度指定的小数位。
- 宽度不够补空格。小数位不够,补0
- 最常见格式:
% + specifier
- 中间省略用默认格式
- flags:特殊显示格式
- 左对齐(
-
), 显示正数+(+
), 左边补空格或0, 显示不同进制符号或小数点(#
)
- 左对齐(
- width:指定宽度,常用数字
- width的数字:表示要输出的字符的最小数目。
- 如果输出的值短于该数,结果会用空格填充。
- 如果输出的值长于该数,结果不会被截断。
- 注意:如有小数点,小数点占一个位数
*
:不太常用
- 小数点,及之后的参数
- 小数点通常和precision放在一起:
.precision
- 小数点通常和precision放在一起:
- .precision:指定精度,常用数字
- 未指定时,默认为 1。如指定时不带有一个显式值,则假定为 0。
- 整数(d、i、o、u、x、X):precision 指定了要写入的数字的最小位数。
- e、E 和 f 说明符:要在小数点后输出的小数位数。
- g 和 G 说明符:要输出的最大有效位数。
- s: 要输出的最大字符数。默认情况下,所有字符都会被输出,直到遇到末尾的空字符。
- c 类型:没有任何影响。
- length:指定长度类型
- 常用:h,l,L
- 完整格式:<
示例
%m.nf
: 指以小数形式输出(输入)浮点型数据,宽度为m,且保留小数点后n位
format属性值详解
参考链接
- 菜鸟教程:C 库函数 - printf()