2.4.3 格式化输出函数printf
前面的章节中我们已经接触过格式化输出函数printf,本节将详细介绍它的使用。putchar函数只能输出一个字符,而printf可以输出任意类型的多个数据。printf可以理解为print function(打印函数),以方便记忆。
printf函数的一般格式为:
printf(控制字符串,参数1,参数2,……,参数n); |
它的功能是,在控制字符串的控制下,将参数转换为规定的格式在标准输出设备(显示器)上进行打印显示。控制字符串中的字符包括两类:一类是普通字符,这些字符在屏幕上原样输出;另一类是格式字符,由%和格式字符组成,如%d、%f,在该位置参数以规定的格式进行输出。
printf使用的格式字符如下。
d:以十进制输出整型值。
o:以八进制输出整型值。
x:以十六进制输出整型值。
u:以无符号形式输出整型值。
c:输出一个字符。
s:输出一个字符串。
f:输出一个浮点数。
e:以科学表示法输出浮点数。
g:输出%f与%e中占用位数较短的一个。
对于长整型,除了可以使用%d方式输出,还可以以%ld的形式输出。现在许多计算机上长整型和整型一样,在内存都是占4个字节,它们所表示的数的范围是一样的,所以%d和%ld在这些机器上是可以通用的。但在一些较老的机器上,整型可能只占两个字节,而长整型占4个字节,输出长整型时须以%ld的格式输出。
注意:单精度浮点型(float)和双精度浮点型(double)都以%f的格式输出。
在%与格式字符之间还可以加上一些说明符以对输出格式作进一步的限定。
-:输出时左对齐,默认是右对齐,如printf("%-10d",i)。
dd:指定输出的参数所占的最小宽度,如果数据的长度小于最小宽度则以空格来填补。例如,printf("%5d",i),若i的值的长度大于等于5位,则原样输出;若小于5位则左边以空格补齐;若是%-5d,则右边以空格补齐。
dd.dd:用于输出浮点数时,前面的dd表示整个浮点数所占的宽度,后面的dd表示小数点后面将输出几位;输出字符串时,前面的dd表示整个字符串所占的宽度,后面的dd表示输出字符串的前dd个字符,例2-9演示了格式化输出函数printf的用法。
例2-9
#include int main() { char c='a'; int i=1234; float f=12.123456; double d=12.5; printf("%d %o %x\n",i,i,i); printf("%c %d\n",c,c) printf("%s\n","hello"); printf("%f %e %g\n",f,f,f); printf("123456789012345678901234567890\n"); printf("%5c%5d%10.5f%10.5f\n",c,i,f,d); printf("123456789012345678901234567890\n"); printf("%-5c%-5d%-10.5f%-10.5f\n",c,i,f,d); } |
程序输出:
1234 2322 4d2 a 97 hello 12.123456 1.212346e+01 12.1235 123456789012345678901234567890 a 1234 12.12346 12.500000 123456789012345678901234567890 a 1234 12.12346 12.50000 |
程序说明。
第1行以十进制、八进制和十六进制3种方式打印出整型变量i的值
。
第2行以两种方式输出字符型变量a。
第3行输出一个字符串。
第4行以3种方式输出浮点型变量f。%f,即以一般浮点形式输出;以%e方式输出时,小数部分最多只能输出6位,最后一位6是四舍五入得到的;以%g方式输出时,小数部分只能保留4位。同样地,最后一位5也是四舍五入得到的。
第5行和第7行输出30个字符,主要是为了方便地观察在带说明符(如dd.dd)时,数据的输出结果。
第6行以dd.dd的格式输出各种数据类型。如字符型变量c其值'a'只占一位,在以%5c方式输出时,左边4位补以空格。
第8行以-dd.dd的格式输出各种数据类型。如整型变量I,其值1234占四位,在以%-5d格式输出时,先输出1234,第5位以空格补充。