C 语言之格式化输出
2016-06-21
格式化输出
C语言的格式化输出使用printf
函数, 其格式如下
printf(格式串,表达式1, 表达式2, ...);
格式串: 格式串包含普通字符和转换说明, 其中转换说明以%
开头, 转换说明是用来表示即将使用何种格式转义输出的占位符(如%d
,%c
)
表达式1,表达式2,…各个表达式是用于替换格式串中的输出占位符的, 当然,替换时要根据占位符的格式进行转换
格式串中的转换说明的数量应该与表达式的数量
一致, 否则会报错
常用转换说明
一般常用的有
%d 十进制整型输出转换
%c 字符型输出转换
%f 浮点型输出转换
%u 十进制无符号整型输出转换
%o 八进制无符号整型输出转换
%x 十六进制无符号整型输出转换
此外,还有
%hd 短整型输出转换
%ld 长整形输出转换
%lld 长长整型输出转换(C99标准)
%e 指数形式输出转换
转换说明格式
格式如下:
%m.pX 或者 %-m.pX
m
和p
均表示整数常量, 而X
是字母(如d,f,c
).而且m
和p
是可选的.
m
表示最小字段宽度, 其定义了输出显示的最少字符数量. 如果要显示的数值所需的字符数少于m
, 那么输出的数值将在前面补充相应数量的空格
, 从而使得空格和数值的字符总数等于m. 而如果要输出得数值所需的字符大于m
, 则不做任何补充
比如printf("%5d",123);
那么实际的输出就是**123
, 在这里前面用两个*
表示补充的2个空格
, 实际输出的时候*
的位置就是空格
而printf("%2d",123)
,世纪的输出就只是123
在m
前面放一个减号(-
)时, 与上面的区别就是将空格补充在输出数值的后面, 相当于左对齐.例:
printf("%-5d",123);
输出的就是123**
,这里同样用*
表示补充的空格
p
参数在X
不同时意义不同,X参数与对应的p的意义如下
X
是d
时
p
表示带显示的数字的最少个数, 如果不足, 则在前面补充0
,如果省略p
, 则默认它的值为1
如:
printf("%.5d\n",123);
实际的输出为00123
, 这个和m
补充空格
略有相像,别搞混了
X
是e
时
e
表示指数形式的浮点数, p
指明了小数点后应该出现的数字的个数(默认值是6), 不足补充0
,如果p
为0, 则不显示小数
如
printf("%.5e\n",123.32);
实际的输出为1.23320e+02
, 定义小数点后面显示5个长度的数值, 不足补充0
X
是f
f
表示十进制的浮点数, 没有指数, p
的含义和上面的e
时的含义一样