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