0

我确实包含了该库<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循环的代码中使用的“功能”(以防止无限循环)?

谢谢

4

0 回答 0