参考c语言中文网
定义:
格式化字符串是包含3种对象类型的一个字符串。
1. 无格式字符
2. 特殊意义占位符
3. 转义序列
无格式字符:
一般的字符,可以直接复制到输出流。
特殊意义的占位符:
% [parameter] [flags] [width] [precision] [length] type
parameter :
若不为空,通常可以省略.
flags :
flags字符为:-、+、#、0和空格五种.
flags | 含义 |
---|
- | 左对齐,右边填补空格,缺省情况为右对齐 |
+ | 输出符号,非负,会给输出加一个+号,若为负数,则会给输出加一个-号 |
# | 对o类,保证产生的值以0开头; 对x类,输出加0x; 对e,g,f类,确保始终包含一个小数点。对c,s,d,u类无影响. |
空格 | 输出为正时,给空格,输出为负时,给负号. |
0 | 表示用0来填充,使用d,i,u,o,x和X类型时,如果给出精度字段,零标志就被忽略。如果格式代码中出现了负号标志,零标志也没有效果。 |
width :
输出最小宽度,若实际位数多于width,则按照实际输出,若小于,则补空格或0.
precision :
精度格式符以.开头,如果输出为数字,表示小数的位数.如果输出为字符,则表示字符的个数.若超出精度,则截去超过的部分.
- 对于d、i、u、o、x和X类型的转换,精度字段指定将出现在结果中的最小的数字个数并覆盖0标志。如果转换后的值的位数小于宽度,就在它的前面插入零。
- 对于e,E和f类型的转换,精度决定将出现在小数点之后的数字位数。
- 对于s类型的转换,精度指定将被转换的最多字符数。
length :
长度格式为h,l两种.
type :
格式字符 | 含义 |
---|
c | 参数以unsigned char类型输出 |
d或i | 参数以一个十进制整数打印 |
u,o,x,X | 参数作为一个无符号值打印,u使用十进制,o使用八进制,x和X使用十六进制 |
e,E | 参数根据指数形式打印, |
f | 参数按照常规的浮点格式打印 |
g,G | 参数以%f或%e的格式打印,取决于它的值。如果指数大于等于-4但小于精度字段就使用%f格式,否则使用指数格式 |
s | 打印一个字符串 |
p | void*类型,指针值被转换为一串因编译器而异的可打印字符。 |
转义序列 :