#include <stdio.h>
int main()
{
int i,sum,status;
sum = 0;
do
{
printf("请输入合法的数字:");
status =scanf("%d",&i);
sum = sum + i;
}
while (status == 1);
printf("结果是:%d", sum);
return 0;
}
在做题时遇到这个题目,要求对用户输入的整数进行求和。当用户输入任意字符时,结束程序并打印结果。在看答案时对scanf的返回值很困惑,查找后得知: “如果函数调用成功,返回值是成功获取并填充到附加参数中的个数。
如果函数调用失败,返回值小于附加参数的个数(甚至是 0)。”
例子
#include <stdio.h>
int main()
{
int a;
int b;
int c;
printf("请输入三个整数:");
int x=scanf("%d%d%d",&a,&b,&c);
printf("%d",x);
return 0;
}
如果输入4 5 8, x = 3;
如果输入1 2 c, x = 2; (c表示我没按照scanf的格式符%d输入,也就是不符合格式符形式的输入)
如果输入1 c c, x = 1;
如果输入c c c, x = 0;
如果输入c 1 1, x = 0;
如果输入1 c 1, x = 1;
由此可见,scanf返回值是所有符合格式符的正确输入的个数,如果遇到第一个错误的输入形式就停止。