对于数值数据输入格式来说,输入域定义为从下一个非空白类字符起(因此可能跳过若干个空格符、制表符、换行符),到一个与数值数据相矛盾的字符,或直到输入了指定个数的字符数;对于字符率输入格式来说,输入域定义为从下一个非空白类字符起,输入非空白类字符,直至遇到空白类字符,或直到输入了指定个数的非空白字符。
(3) h/l/L长度修饰符,指明输入数据项的存储类型。
h 修饰格式符d,o,X时,表示输入的整数按短整型存储。
l 修饰格式符d,O,X时,表示输入的整数按长整型存储。
l 修饰格式符e,f时,表示输入的实数按double型存储。
缺省时,对于格式符d,o,x,表示输入的整数按int整型存储;对于格式符e,f,表示输入的实数是按float型存储。
表3.l常用输入格式符表
格式符 意 义
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)。