Scanf 未在 while 循环中被拾取

Scanf not being picked up inside a while loop

提问人:CostaSM 提问时间:4/21/2020 更新时间:4/21/2020 访问量:59

问:

因此,我用一个 while 循环编写了这段代码,该循环一直持续到 EOF。它的问题在于它没有拾取 scanf 函数的第一个输入。基本上,在程序按预期工作之前,我必须按一次“Enter”。我该如何解决这个问题?

#include <stdio.h>

int main(){
    int firstNumber, secondNumber, i;
    double firstFactorial = 1, secondFactorial = 1;
    while(getchar() != EOF){
        scanf("%d %d", &firstNumber, &secondNumber);
        for(i = 1; i <= firstNumber; ++i){
            firstFactorial = firstFactorial * i;
        }
        for(i = 1; i <= secondNumber; ++i){
            secondFactorial = secondFactorial * i;
        }
        printf("%lf\n", firstFactorial + secondFactorial);
        firstFactorial = 1;
        secondFactorial = 1;
    }
    return 0;
}
c while-loop scanf eof

评论

2赞 tadman 4/21/2020
混合似乎是一个糟糕的计划,因为会消耗输入。getchar()scanf()getchar()
1赞 user3386109 4/21/2020
您可以通过将调用放在语句中来修复它,例如 返回值为 from 是成功转化的次数。在代码中应为 2,因为格式字符串有两个转换请求。scanfwhilewhile (scanf(...) == 2) { ... }scanf
0赞 user3386109 4/21/2020
顺便说一句,假设 an 是 32 位,此代码仅适用于最多 12 位的输入。 大约是 62 亿,对于一个 32 位的数字来说太大了。int13!

答: 暂无答案