我无法使fflush()清除标准输入

时间:2018-01-09 04:29:58

标签: c

在下面的代码中,我尝试让fflush()清除标准输入,但是当我运行代码时,我注意到在第一次迭代之后,它将跳过getchar()部分。我读了一些关于fflush()的手册页。但是我无法找到任何关于为什么fflush()在这种情况下没有清除缓冲区的事情。在第一次迭代中,我在" puts(" Prees n退出")之后输入y,但在第二次迭代中,getchar()仍然从缓冲区得到y。

int main(void)
{
    char month_input[size];
    typedef struct date_info user_input;
    user_input info;
    _Bool check = true;
    char ch;

    while(check)
    {   
        puts("Press n to quit");
        printf("ch = %d\n", ch);

        if((ch = getchar()) == 'n')
            break;
        fflush(stdin);

        printf("which month?\n");
        scanf("%s", month_input);
        info.month = month_input;

        printf("Enter the date\n");
        scanf("%d", &info.date);

        printf("Enter the year\n");
        scanf("%d", &info.year);


        fflush(stdin);


    }
    printf("month = %s / date = %d / year = %d", info.month, info.date, info.year);

    return 0;
}

0 个答案:

没有答案