fflush(stdin)在视觉工作室2015中没有工作

时间:2016-12-27 05:05:37

标签: c visual-studio

此代码无效,因为它在CodeBlocks中起作用:

#include <stdio.h> 
#include <stdlib.h>

int main()
{
    char c;
    char choice;

    do
    {
        printf("Enter a character using getchar(): ");
        fflush(stdin);
        c = getchar();
        printf("The entered charcter is: ");
        putchar(c);
        do
        {
            printf("\nDo you want to continue [Y/N]: ");
            fflush(stdin);
            choice = getchar();
            if (choice >= 'a' && choice <= 'z')
                choice -= 32;
        } while (choice != 'Y' && choice != 'N');
        printf("\n");
    } while (choice == 'Y');

    system("pause");
    return 0;
}

输出结果为:

Enter a character using getchar(): !
The entered character is: !
Do you want to continue [Y/N]:
Do you want to continue [Y/N]: y

Enter a character using getchar(): The entered character is:

Do you want to continue [Y/N]:

为什么fflush(stdin)不起作用?

还有其他方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

fflush(stdin)未定义,标准为:

  

J.2未定义的行为

     

fflush函数的流指向输入流或输入最近操作的更新流(7.21.5.2)。

所以不要使用它。