函数scanf( )的返回值 就是:
(啊啊啊为啥scanf还有返回值??)
“所输入的数据与格式字符串中匹配次数.”
简单来说就是,它返回已成功赋值的数据项数;出错时则返回EOF.
(注:EOF(End Of File)是一个预定义的常量,等于-1.)
例如,可以通过以下程序证实:
#include
/*证实函数scanf()的返回值*/ int main() { int a,b; int input; /*获取scanf函数的返回值*/ input = scanf("%d %d",&a,&b); printf("input = %d",input); }
此例中:
-
若输入:1 2↙
输出:input = 2
说明:成功输入了两个整数.

若输入:1 a↙
输出:input = 1
说明:仅仅匹配了变量a,而整型变量b无法得到字符‘a’,依旧是一个未赋值前不确定的值.
如调试图:

若输入:a b↙
输出:input = 0
说明:均未成功读入.
如调试图:

若输入:^Z ^Z↙
会得到:input = -1
说明:输入出错,返回值为-1.
(注:ctrl+z输入代表输入文件结束符)
如调试图:

#include /*计算a + b*/ int main() { int a,b; /*当输入不非法的时候不断读取a,b*/ while(scanf("%d %d",&a, &b) != EOF) { printf("%d\n",a+b); } } 另做参考:
#include
int main() { int a,b; int input = scanf("%d %d",&a,&b); while(input != 2)/*直到两整型变量a,b同时读入整数时才跳出循环*/ { fflush(stdin);/*清除缓冲区*/ input = scanf("%d %d",&a,&b); } printf("%d + %d = %d",a,b,a + b); return 0; }
总之,我们可以通过运用函数scanf( )的返回值的意义(即“所输入的数据与格式字符串中匹配次数”),来把控我们的输入格式的正确性.
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211620.html原文链接:https://javaforall.net
