购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3-1 printf( )函数

在C语言中,最常见的输出函数就是printf( )了,通常我们可以将要输出的数据用双引号括起来,然后再将它放入printf( )的括号中就可以了。

程序实例 ch3_1.c:打印字符串“C程序设计”两次,且将它打印在同一行中。

3-1-1 C语言的控制字符“\n”

在程序实例ch3_1.c中,我们可以看到字符串“C程序设计”在同一行中打印了两次。C语言提供了一种控制字符,可让我们将上述字符串分别打印在不同的两行中,这个控制字符是“\n”,这个字符主要的目的是指示输出装置,跳行打印输出字符。

程序实例 ch3_2.c:重复打印字符串“C程序设计”,但是将它分两行打印出来。

程序实例 ch3_3.c:打印字符串“C程序设计”字符串两次,但是按照不同格式将它打印出来。

3-1-2 十进制整数的打印“%d”

printf( )函数除了可以直接打印字符串之外,还可以用格式化的方式控制输出的结果。本节将介绍如何利用“%d”执行十进制整数的打印,其打印结构如下所示。

在使用上述printf( )函数打印数据时,必须注意下列几点:

(1)第一个格式符号配合第一个欲打印的变量,其他以此类推。

(2)在控制打印区内的格式符号之间,可以有许多空格,或是没有任何空格。

(3)在打印变量区内,各变量之间一定要用逗号隔开。

(4)打印变量区的变量也可以是一个表达式。

(5)控制打印区需用双引号括起来。

(6)控制打印区和打印变量区之间需用逗号隔开。

程序实例 ch3_4.c:基本整数输出的实例应用,本程序将会打印exercise ch3_4.c,但“3”和“4”分别用整数变量将它打印出来。

上述变量i配合第一个格式符号,变量j配合第二个格式符号。

程序实例 ch3_4_1.c:打印变量区是一个表达式。

另外,在使用打印变量时,还必须要知道如何修饰输出的位置。这个修饰字通常是由阿拉伯数字构成,一般我们将它放在%和d之间。修饰字和整数格式输出间的规则如下。

1.%d

在此类的输出格式下,C语言输出的格数和变量的长度相同。

实例1: 假设变量值是356,则输出时会预留3格空间,如下所示:

假设变量值是18,则输出时会预留2格空间给它,如下所示:

2.%nd

n是整数值,代表输出时预留的输出格数。使用此种方式输出时,会遇到两种情况:一种情况是预留格数比输出值所需要的空间大,此时会将输出结果向右对齐;另一种情况是预留格数比输出值所需要空间小,此时会忽略预留格数,而自动匹配实际所需的格数。

实例2: 假设变量值是356,控制打印的格式符号是%2d,则打印结果如下所示:

实例3: 假设变量值是356,控制打印的格式符号是%5d,则打印结果如下所示:

3.%-nd

这个输出格式和前一个类似,唯一不同的是,若预留格数比输出值所需的空间大时,会将输出结果向左对齐。

实例4: 假设变量值是356,控制打印的格式符号是%-5d,则打印结果如下所示:

4.%+nd

这个输出格式会将数值的正负号显示出来。

实例5: 假设变量值是356,控制打印的格式符号是%+5d,则打印结果如下所示:

5.%0nd

这个输出格式会在数值前的空白处填“0”。

实例6: 假设变量值是356,控制打印的格式符号是%05d,则打印结果如下所示:

程序实例 ch3_5.c:格式化输出某一整数变量值的应用。

3-1-3 浮点数或是双倍精度浮点数的打印“%f”

浮点数变量打印的使用规则如下:

1.%f

在此类的输出格式下,C语言会预留10格空间供输出使用,假设格数空间大于变量值所需的空间,则剩余空间供变量的小数点使用。

值得注意的是,一般系统浮点数只能存储6个或7个数字的精确度(又称有效位数),而我们所要的输出数字是10格,所以真正输出时也许小数点的值会略为不同于实际值。程序实例ch3_6.c会说明这个概念,由于会有这种差异,所以在实际格式输出时,我们应该避免以这种方式输出数据。

2.%m.nf

在这种输出格式下,m代表浮点数的输出宽度,n代表小数点所需宽度。和整数输出格式一样,如果所要求的空间不够,系统会自己配置足够的空间供输出使用。若是配置的空间太多,则系统输出结果会向右对齐。

实例1: 假设变量值是123.56,控制打印格式符号是%8.2f,则打印结果如下所示:

3.%-m.nf

这个输出格式和上一规则类似,唯一的不同是,若预留格数比输出值所需的空间大,C语言会将输出结果向左对齐。

实例2: 假设变量值是123.56,控制打印格式符号是%-8.2f,则打印结果如下所示:

4.%+m.nf

这个输出格式会将数值的正负号显示出来。

实例3: 假设变量值是123.56,控制打印格式符号是%+8.2f,则打印结果如下所示:

5.%0m.nf

这个输出格式会在数值前的空白处填“0”。

实例4: 假设变量值是123.56,控制打印格式符号是%08.2f,则打印结果如下所示:

双倍精度浮点数的输出可以使用%f,也可以使用%lf,也就是在%和f字符间增加l。

程序实例 ch3_6.c:格式化输出某一实数变量值的应用。

3-1-4 字符的打印“%c”

字符打印的规则如下。

1.%c

在此格式下会预留一格空间供输出使用。

实例1: 假设变量值是“a”,控制格式符号是%c,则输出结果如下所示:

2.%nc

在此格式下会预留 n 格空间供输出使用,但输出结果将会向右对齐。

实例2: 假设变量值是“a”,控制格式符号是%3c,则输出结果如下所示:

3.%-nc

在此格式下会预留 n 格空间供输出使用,但输出结果将会向左对齐。

实例3: 假设变量值是“a”,控制格式符号是%-3c,则输出结果如下所示:

程序实例 ch3_7.c:格式化输出某一字符变量值的应用。

在ASCII码值表内(如附录A所示),几个重要分类字符如下:

0~31:控制字符或是通信专用字符,可以参考2-3-2节。

32~47:标点符号和运算符号字符,其中32是空格。

48~57:0~9这10个阿拉伯数字。

58~64:符号字符。

65~90:26个大写英文字母。

91~96:符号字符。

97~122:26个小写英文字母。

接下来将介绍一些打印字符的程序实例。

程序实例 ch3_8.c:基本字符输出及ASCII码值的应用。

程序实例 ch3_9.c:字符变量的另一个应用。

程序实例 ch3_10.c:使用两种方式输出响铃。

在2-3-2节介绍了“\t”特殊字符,这是可以让输出依据键盘的Tab键控制输出位置,细节可以参考下列实例。

程序实例 ch3_11.c:Tab键控制输出的应用。

2-3-2节介绍了两种字符的表示方式:

“\xdd”:其中x后面的两个d各代表一个十六进制数值。

“\ddd”:其中3个d各代表一个八进制数值。

程序实例 ch3_12.c:十六进制的字符输出。

程序实例 ch3_13.c:八进制的字符输出。

3-1-5 其他格式化数据打印原则

除了以上常用的格式化输出变量值的应用外,printf( )函数还提供下列格式化打印方式:

%ld:长整数打印。

%s:主要用于打印字符串,本章会简单解说,将在第8章字符串彻底剖析中做详细说明。

%e:以e记号(科学记数法)输出浮点数。

%E:以E记号(科学记数法)输出浮点数。

%u:不带符号的十进制整数输出。

%o:八进制整数输出。

%x:十六进制整数输出,输出英文字母a~f时是小写。

%X:十六进制整数输出,输出英文字母A~F时是大写,最常应用在标记变量在内存的地址,标记内存地址时会省略左边的0,本书第8章程序实例ch8_20_1.c会说明,第11章指针章节则会大量使用。

%p:十六进制输出变量的内存信息,这也是C语言官方手册建议使用输出内存信息的方式,输出时英文部分会使用大写,如果计算机是以8位长度标记内存地址,内存地址是62FFFA,会得到000000000062FFFA的表示,相当于会将左边的0也输出,完整表达内存地址,本书第8章ch8_20.c实例会做说明。

以上9种输出格式也和整数或浮点数输出格式一样,有以下类似的输出原则:

(1)在%和符号格式值之间若没有任何修饰字,则C语言会依照实际需要做输出。

□ %s:对字符串而言,会依照字符串长度输出。

□ %e:预留12格供输出使用。

□ %u,%o,%x:依照实际需要格数输出。

(2)若%和符号格式值之间有修饰词指定输出长度,则有两种情况。若指定长度大于输出要求,则打印时会向右对齐。若是指定长度小于输出要求,则C语言会自动配给足够空间供它使用。

(3)当%和修饰词之间有“-”符号时,若指定输出长度大于输出要求长度,则打印时会向左对齐。

程序实例 ch3_14.c:格式化输出其他类型变量的应用。

程序实例 ch3_15.c:另一种不寻常的printf( )输出应用。先前的各种应用实例大多将变量放在打印变量区内,然而也可以直接将某一数值放在打印变量区内,如本实例所示。 SaKYd9H1fqYkNi8NCWNjP25aZskpE4yqpcqEAyHcok6roYXviVnF7+83tuf+HSnr

点击中间区域
呼出菜单
上一章
目录
下一章
×