scanf问题
- C/C++ code
/* 求一串数字的和,以输入0为结束 */#include <stdio.h>#include <stdlib.h>main(){ int sum, number; printf("This program sums a series of integers.\n"); printf("Enter integers (0 to terminate): "); sum = 0; while ((scanf("%d", &number)) != 0) sum += number; printf("The sum is : %d\n", sum); system("PAUSE"); return 0; }编译后运行有问题
while ((scanf("%d", &number)) != 0)这句scanf这么用对么?scanf("%d", &number)是函数调用她返回的值是什么呢?
[解决办法]
不对。 scanf 函数的返回值是已赋值的域的各数,不是等于 d 的值。
比如说 scanf("%d%d%d", &number1,&number2,&number3)),如果number1,number2,number3都正确读入了,那么scanf 的返回值是3,不是其中某个number 变量的值
[解决办法]
- C/C++ code
#include <stdio.h>#include <stdlib.h>int main(){ int sum, number; printf("This program sums a series of integers.\n"); printf("Enter integers (0 to terminate): "); sum = 0; while ((scanf("%d", &number)) != 0) { if(number==0) break; sum += number; } printf("The sum is : %d\n", sum); system("PAUSE"); return 0; }
[解决办法]
scanf()函数返回进入缓冲区的数据个数,比如说
scanf("%d",&number1)返回1
scanf("%d%d",&number1,&number2)返回2
scanf("%d%d%d",&number1,&number2&number3)返回3
当然如果类型不对,就返回0
[解决办法]
scanf的返回值表示正确读入的变量数量
出错返回0,遇到文件结束返回EOF.
[解决办法]
sum = 0;
while ((scanf("%d", &number)) != 0)
{
if(number==0)
break;
sum += number;
}
for (sum = 0; scanf("%d", &number)&&number; sum += number)
;