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时的含义一样