首页 > 解决方案 > 即使使用 fflush,第二个 scanf 也无法正常工作

问题描述

下面是一个我正在尝试运行的简单程序,但不幸的是它不能正常工作,当我第二次尝试输入时,它不接受输入。

#include <stdio.h>

int main(){
    int inpt, 
        pos = 0,
        neg = 0,
        zero = 0;
    char cont = 'y';

    while(cont == 'y' || cont == 'Y') {
        printf("\nPlease enter a Number: ");
        scanf("%d", &inpt);

        if( inpt < 0) {
            neg++;
        } else if( inpt > 0) {
            pos++;
        } else {
            zero++;
        }

        fflush(stdin);

        printf("\n Do you want to Continue:");
        scanf("%c", &cont);

        printf("\nvalue: %d", cont);
    }

    printf("\nTotal Number of Positive Integers: %d \n Total Number of Negative Integers: %d \n Total Number of Zeros: %d ", pos, neg, zero);

    return 0;
}

幸运的是,我尝试调试并打印了 cont 的值,发现它是 10(这是键盘上 Enter 键的 ASCII 值)。我希望 fflush 应该清除输入缓冲区,但似乎并非如此。

任何有关如何修复的建议将不胜感激。

标签: cscanf

解决方案


推荐阅读