我确实包含了该库<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)
实际上是一个坏主意,并且该函数已被标记为未定义的行为。
但这里有一些真正让我好奇的问题:
为什么
fflush(stdin)
不再适用于 VS2015?是否还有其他方法可以实现
fflush(stdin)
可以在涉及do-while循环的代码中使用的“功能”(以防止无限循环)?
谢谢