l 修饰格式符d,O,X时,表示输入的整数按长整型存储。
l 修饰格式符e,f时,表示输入的实数按double型存储。
缺省时,对于格式符d,o,x,表示输入的整数按int整型存储;对于格式符e,f,表示输入的实数是按float型存储。
3.3 常用输入格式符表中格式符的意义
d 输入十进制形式的整型数据
O 以人进制形式输入整型数据
X 以十六进制形式输入整型数据
C 输入字符数据
S 输入字符串
e,f 输入实型数据
说明:
(1)格式控制字符率之后给出的是变量地址,而不是变量名(除非是指针)。如要为整型变量n输入数据,写成
scanf(”%d", n)是不正确的,应写成 scanf(”% d”,&n)
(2)如果在格式控制字符串中除格式转换说明和空白符之外,还有其它字符,则在输入数据时应输入与这些字符相同的字符。例如,
scanf(”%d, %d’’,&i, &j)
则在为i,j输入数据时,紧接在第一个整型数据之后,需要有一个逗号字符,如输入
1,2
是正确的;而输入
1 2
等其它形式都是不正确的。
(3)在用”%c ”格式转换说明输入字符时,空白类字符和用转义字符表示的字符都能作为有效字符输入。要输入一串空白类字符之后的第一个非空白类字符,可采用格式”% C”。格式字符率中的空格符使输入跳过空白类字符到第一个非空白类字符,然后被C格式输入。
(4)为整型变量输入整数时,若变量类型为短整型,则必须在格式符之前加长度修饰说明h;若变量类型为长整型,则必须在格式符之前加长度修饰说明1。
(5)输入数值数据时,输入字符流中的前导空白类字符会被自动跳过,从空白类字符后的数值数据字符开始输入。构成数值数据的字符被输入转换成计算机的内部表示,并存储结果。
若第一个非空白类字符不能构成数值字符,则立即结束输入。
(6)S格式用来输入字符串,对应的变量地址为字符列表(数组)的首地址,该数组必须大到足以容纳可能输入的最长字符串。在输入字符流中,跳过前导的空白类字符,以非空白类字符开始,以后随的第一个空白类字符结束的非空白类字符的字符序列作为一个字符串。scanf()函数在输入的字符序列之后自动添加字符率结束标记符'\0'(因此,存储输入字符序列的字符数组的长度必须比实际最长字符串的字符数多1)。
(7)e,f格式用未输入实数,对应的数据存储地址为实型数据存储地址。如格式转换说明中含有长度修饰说明1,则为double型变量地址;若无长度修饰说明,则为float型变量地址。输入数据的字符序列是由正负号(可有可无)、十进制数字串、带小数点的小数部分(可有可无)。以e或E开头的指数部分(可有可无)组成。
(8)在跳过前导空白符后,正在输入数值数据和字符串时,遇以下情况,就认为该数据结束:
·遇空白类字符:空白符、制表符、换行符。
·已读人由有效字符数所指定的字符数。如”%4d多至4个数字符。
·对于输入数值数据,下一个字符不能构成正确的数据格式。如
scanf(”%d%C%f,&i,&c,&x)
假定变量i,c,x分别为int型、char型和float型。若输入字符列为:
123a123x. 26
则变量i为123,变量c为字符a,变量x为123.0。
(9)输入数据时,将字符流转换成内部表示后,存储到对应变量中。例如,
scanf(”%3d%*4d%d”,&i, &j)
如输入字符行为
123456 78
将使变量i=123,j=78。其中数据456因赋值抑制符*的作用被跳过。一般从键盘读入数据,不指定输入数据项的有效字符数,数据项与数据项之间用空白符,或制表符,或回车符分隔。
4.格式输出函数
格式输出函数printf()的作用是将输出项接指定的格式排版输出到标准设备上(通常是终端显示屏)。调用printf()函数的一般形式为