刷新输入缓冲器C.

时间:2014-01-28 06:05:45

标签: c math buffer flush cstdio

注意:fflush(stdin)不起作用。

问题:
我使用scanf(inb4折旧)在while循环中输入数字。当我输入一个时,缓冲区用空行填充其余部分。

代码:

double input, total;

for(i=0; i<COUNT; i++){
     printf("\nNumber %d: ", i+1);
     scanf("%d", &input);
     total += input;
}
printf("\nAverage: %f\n", total/COUNT);

输出:

Please enter 5 decimal numbers: 
Number 1: 1.0

Number 2: 
Number 3: 
Number 4: 
Number 5: 
Average: 0.000000

2 个答案:

答案 0 :(得分:2)

 if(scanf("%d", &input) != 1)
 {
      /* If scanf failed to read a number clear the input buffer */
      while((c = getchar()) != '\n' && c != EOF);
 }

答案 1 :(得分:0)

在接受输入之前使用flushall() 您还使用%d存储为double,使用%lf,或将输入声明为int