printf数据输出语句和转义字符
数据输出语句
本⼩节介绍的是向标准输出设备显⽰器输出数据的语句。在C语⾔中,所有的数据输⼊/输出都是由库函数完成的。 因此都是函数语句。本⼩节先介绍printf函数和putchar函数。printf函数printf函数称为格式输出函数,其关键字最末⼀个字母f即为“格式”(format)之意。其功能是按⽤户指定的格式, 把指定的数据显⽰到显⽰器屏幕上。在前⾯的例题中我们已多次使⽤过这个函数。
⼀、printf函数调⽤的⼀般形式
printf函数是⼀个标准库函数,它的函数原型在头⽂件“stdio.h”中。但作为⼀个特例,不要求在使⽤ printf 函数之前必须包含stdio.h⽂件。printf函数调⽤的⼀般形式为: printf(“格式控制字符串”,输出表列)其中格式控制字符串⽤于指定输出格式。 格式控制串可由格式字符串和⾮格式字符串两种组成。格式字符串是以%开头的字符串,在%后⾯跟有各种格式字符,以说明输出数据的类型、形式、长度、⼩数位数等。如“%d”表⽰按⼗进制整型输出,“%ld”表⽰按⼗进制长整型输出,“%c”表⽰按字符型输出等。后⾯将专门给予讨论。
⾮格式字符串在输出时原样照印,在显⽰中起提⽰作⽤。 输出表列中给出了各个输出项, 要求格式字符串和各输出项在数量和类型上应该⼀⼀对应。
⼆、格式字符串
在Turbo C中格式字符串的⼀般形式为: [标志][输出最⼩宽度][.精度][长度]类型 其中⽅括号[]中的项为可选项。各项的意义介绍如下:
1.类型类型字符⽤以表⽰输出数据的类型,其格式符和意义下表所⽰:
表⽰输出类型的格式字符 格式字符意义
d 以⼗进制形式输出带符号整数(正数不输出符号)
o 以⼋进制形式输出⽆符号整数(不输出前缀O)
x 以⼗六进制形式输出⽆符号整数(不输出前缀OX)
u 以⼗进制形式输出⽆符号整数
f 以⼩数形式输出单、双精度实数
e 以指数形式输出单、双精度实数
g 以%f%e中较短的输出宽度输出单、双精度实数
c 输出单个字符
s 输出字符串
2.标志
标志字符为-、+、#、空格四种,其意义下表所⽰:
标志格式字符 标 志 意 义
- 结果左对齐,右边填空格
+ 输出符号(正号或负号)
空格 输出值为正时冠以空格,为负时冠以负号
# 对c,s,d,u类⽆影响;对o类, 在输出时加前缀。对x类,在输出时加前缀0x;对e,g,f 类当结果有⼩数时才给出⼩数点
printf怎么输出字符3.输出最⼩宽度
⽤⼗进制整数来表⽰输出的最少位数。 若实际位数多于定义的宽度,则按实际位数输出, 若实际位数少于定义的宽度则补以空格或0。
4.精度
精度格式符以“.”开头,后跟⼗进制整数。本项的意义是:如果输出数字,则表⽰⼩数的位数;如果输出的是字符, 则表⽰输出字符的个数;若实际位数⼤于所定义的精度数,则截去超过的部分。
5.长度
长度格式符为h,l两种,h表⽰按短整型量输出,l表⽰按长整型量输出。
例⼦
"%-md" :左对齐,若m⽐实际少时,按实际输出。
"%m.ns":输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n
< "%7.2s" 输⼊CHINA 输出" CH"
"%m.nf":输出浮点数,m为宽度,n为⼩数点右边数位
< "%3.1f" 输⼊3852.99 输出3853.0
6.特殊⽤法
对于m.n的格式还可以⽤如下⽅法表⽰(例)
char ch[20];
printf("%*.*s/n",m,n,ch);
前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外⾯的参数m和n 。我想这种⽅法的好处是可以在语句之外对参数m和n 赋值,从⽽控制输出格式。
今天(06.6.9)⼜看到⼀种输出格式 %n 可以将所输出字符串的长度值赋绐⼀个变量, 见下例:
例⼦:
int slen;
printf("hello world%n", &slen);
执⾏后变量被赋值为11。
7.C语⾔常⽤转义字符表
字符常量中使⽤单引号和反斜杠以及字符常量中使⽤双引号和反斜杠时,都必须使⽤转义字符表⽰,即在这些字符前加上反斜杠。
在C程序中使⽤转义字符/ d d d或者/ x h h可以⽅便灵活地表⽰任意字符。/ d d d为斜杠后⾯跟三位⼋进制数,该三位⼋进制数的值即为对应的⼋进制A S C I I码值。/ x后⾯跟两位⼗六进制数,该两位⼗六进制数为对应字符的⼗六进制A S C I I码值。
使⽤转义字符时需要注意以下问题:
1) 转义字符中只能使⽤⼩写字母,每个转义字符只能看作⼀个字符。
2) /v 垂直制表和/f 换页符对屏幕没有任何影响,但会影响打印机执⾏响应操作。
3) 在C程序中,使⽤不可打印字符时,通常⽤转义字符表⽰
注:
1,/v垂直制表和/f换页符对屏幕没有任何影响,但会影响打印机执⾏响应操作。
2,/n其实应该叫回车换⾏。换⾏只是换⼀⾏,不改变光标的横坐标;回车只是回到⾏⾸,不改变光标的纵坐标。
3,/t 光标向前移动四格或⼋格,可以在编译器⾥设置
4,/' 在字符⾥(即单引号⾥)使⽤。在字符串⾥(即双引号⾥)不需要,只要⽤ ' 即可。
5,/? 其实不必要。只要⽤ ? 就可以了(在windows VC6 和tc2 中验证)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论