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

mp均表示整数常量, 而X是字母(如d,f,c).而且mp是可选的.

m 表示最小字段宽度, 其定义了输出显示的最少字符数量. 如果要显示的数值所需的字符数少于m, 那么输出的数值将在前面补充相应数量的空格, 从而使得空格和数值的字符总数等于m. 而如果要输出得数值所需的字符大于m, 则不做任何补充

比如printf("%5d",123);那么实际的输出就是**123, 在这里前面用两个*表示补充的2个空格, 实际输出的时候*的位置就是空格 而printf("%2d",123),世纪的输出就只是123

m前面放一个减号(-)时, 与上面的区别就是将空格补充在输出数值的后面, 相当于左对齐.例:

printf("%-5d",123);

输出的就是123**,这里同样用*表示补充的空格

p参数在X不同时意义不同,X参数与对应的p的意义如下

Xd

p表示带显示的数字的最少个数, 如果不足, 则在前面补充0,如果省略p, 则默认它的值为1

如:

printf("%.5d\n",123);

实际的输出为00123, 这个和m补充空格略有相像,别搞混了

Xe

e表示指数形式的浮点数, p指明了小数点后应该出现的数字的个数(默认值是6), 不足补充0,如果p为0, 则不显示小数

printf("%.5e\n",123.32);

实际的输出为1.23320e+02, 定义小数点后面显示5个长度的数值, 不足补充0

Xf

f 表示十进制的浮点数, 没有指数, p的含义和上面的e时的含义一样