您的位置:首页 > 其它

关于scanf的返回值

2009-02-17 06:27 274 查看
#文章部分内容摘自《C primer plus》

scanf()函数返回成功读入的项目的个数。如果它没有读取任何项目(当它期望一个数字而你却键入了一个非数字字符串就会发生这种情况),scanf()会返回0。当它检测到“文件结尾”,它返回EOF,一般EOF值为-1。利用scanf()的返回值,可以检测和处理不匹配的输入。
例如,你想在输入数字时执行while循环,其他字符时跳出。则可这样写:

float a;
while (scanf("%f", &a) == 1) {
;
}


而当scanf未能读取指定形式的输入时,它就留下这个不相容的输入,以供下次读取。
看下面这个程序:

#include <stdio.h>
int main(void) {
int a, b, c;
printf ("%d",scanf ("%d %d %d", &a, &b, &c));
return 0;
}


当你输入f 1 2时,即使后面两个对应的输入类型是对的,当由于第一个类型错误,导致后面将一直读取f,所以输出值为0。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: