fflush(stdin)与VS2013和VS2015

时间:2015-07-25 15:25:00

标签: c visual-studio-2015 fflush

我确实包含了库<stdio.h>但是下面的代码导致了VS 2015(以及GNU GCC)的无限循环:

//Sample Code
void main() {
char check;
do {
    check = '\0';
    printf("Enter a character > ");
    fflush(stdin);
    scanf("%c", &check);
    if (check == '\n') printf("\nERROR\n");
} while (check != '\n');
system("pause"); }

/*
Result:
Enter a character > r
Enter a character >
ERROR
Enter a character > ww
Enter a character > Enter a character >
ERROR
*/

但是当我在我之前的VS版本(2013年)编译它时,它完全正常。所以我怀疑fflush功能不再适用于VS 2015。

抱歉,我是C语言的新手。 所以,根据我所说的,使用fflush(stdin)实际上是一个坏主意,并且此函数已被标记为未定义的行为。

但是这些真正的问题让我很好奇:

  1. 为什么fflush(stdin)不再适用于VS2015?

  2. 还有其他方法可以实现fflush(stdin)的“功能”,可以在涉及do-while循环的代码中使用(以防止无限循环)?

  3. 谢谢

0 个答案:

没有答案