欢迎大家多多交流,补充scanf函数的注意点!!!
scanf格式输入函数
一. 函数原型:int scanf(const char *format,…);
其调用形式为: scanf("<格式说明字符串>",<变量地址>);变量地址要求有效,并且与格式说明的次序一致。
返回值:scanf()函数返回成功赋值的数据项数,读到文件末尾或出错时则返回EOF
二. 注意点
(1) 百分号(%)与格式符之间的星号(*)表示读指定类型的数据但不保存。因此,
scanf("%d%*c%d",&x,&y);
对 10/20 的读入操作中,10 放入变量 x,20 放入 y。
(2) 虽然空格、制表符和新行符都用做域分割符号,但读单字符操作中却按一般字符处理。例如,对输入流 "x y" 调用:
scanf("%c%c%c",&a,&b,&c);
返回后,x 在变量 a 中,空格在变量 b 中,y 在变量 c 中。
注意,控制串中的其它字符,包括空格、制表符和新行符,都用于从输入流中匹配并放弃字符,被匹配的字符都放弃。例如,给定输入流 "10t20",调用:
scanf("%dt%d",&x,&y);
将把 10 和 20 分别放到 x 和 y 中,t 被放弃,因为 t 在控制串中。
(3) 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格,TAB或回车作间隔。
C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。
(4) 在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
|
|