c语言输出函数printf
和fprintf
使用修饰符格式化输出不同类型的变量。在这里总结一下各种不同的修饰符以及输出数据的格式。
修饰符
修饰符 | 参数类型 | 含义 |
f/g | float/double | 浮点小数 |
d | char/short/int | 十进制数 |
u | unsigned char/unsigned short/unsigned int | 无符号十进制数 |
c | char | 一个字符 |
s | char[]/char* | 一个字符串 |
p | * | 指针类型 |
ld | long int | 长整型十进制 |
lu | unsigned long int | 无符号长整型十进制 |
lld | long long int | 长整型十进制 |
llu | unsigned long long int | 无符号长整型十进制 |
x/X | int | 16进制小写/大写 |
o | int | 8进制 |
e | float/double | 科学计数法 |
主要的修饰符如上表所示,而且可以在%
和修饰符之间添加一个整型数字来指定输出内容的宽度,以及对齐方式。超出宽度的字符正常输出,负数表示左对齐:
char k[ 11 ] = "1234567890";
printf("\t|123456789ABCDEFGHIJK|\n");
printf( "(%%s)\t|%s|\n", k );
printf( "(%%7s)\t|%7s|\n", k );
printf( "(%%14s)\t|%14s|\n", k );
printf( "(%%-7s)\t|%-7s|\n", k );
printf( "(%%-14s)\t|%-14s|\n", k );
/*
|123456789ABCDEFGHIJK|
(%s) |1234567890|
(%7s) |1234567890|
(%14s) | 1234567890|
(%-7s) |1234567890|
(%-14s) |1234567890 |
*/
另外针对整型和浮点型有特别的标识可以使用。
整型
整型主要包括short
,int
,long int
,long long int
以及它们对应的无符号类型unsigned short
,unsigned int
,unsigned long int
,unsigned long long int
。整型可以以十进制(%d)、十六进制(%x)、八进制(%o)。
int l = 31;
printf( "十进制(%%d)\t%d\n", l );
printf( "十六进制(%%x,%%X)\t%x,%X\n", l, l );
printf( "八进制(%%o)\t%o\n", l );
printf( "十进制(%%04d,%%4d)\t%04d,%4d\n", l, l );
printf( "十六进制(%%04x,%%4X) \t%04x,%4X\n", l, l );
printf( "八进制(%%o04o,%%4o)\t%04o,%4o\n", l, l );
/*
十进制(%d) 31
十六进制(%x,%X) 1f,1F
八进制(%o) 37
十进制(%04d,%4d) 0031, 31
十六进制(%04x,%4X) 001f, 1F
八进制(%o4o,%4o) 0037, 37
*/
浮点型
浮点型主要包括float
,double
两种类型。可以使用%f,%g,%e进行输出。
其中%g和%s都以科学计数法的方式输出,不过%g在默认情况下包括整数位共输出六位,而%f和%e默认小数位数为六位。不过可以通过.m来指定小数点后面的位数。
char* m = "1234567.88889999";
double n = 1234567.88889999;
printf( "%%s\t|%s|\n", m );
printf( "%%f\t|%f|\n", n );
printf( "%%g\t|%g|\n", n );
printf( "%%e\t|%e|\n", n );
printf( "%%.3f\t|%.3f|\n", n );
printf( "%%.3g\t|%.3g|\n", n );
printf( "%%.3e\t|%.3e|\n", n );
/*
%s |1234567.88889999|
%f |1234567.888900|
%g |1.23457e+06|
%e |1.234568e+06|
%.3f |1234567.889|
%.3g |1.23e+06|
%.3e |1.235e+06|
*/