读书人

scanf有关问题

发布时间: 2012-03-27 13:44:24 作者: rapoo

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)
;

读书人网 >C语言

热点推荐