此代码无效,因为它在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)不起作用?
还有其他方法可以解决这个问题吗?
答案 0 :(得分:3)
fflush(stdin)
未定义,标准为:
J.2未定义的行为
fflush函数的流指向输入流或输入最近操作的更新流(7.21.5.2)。
所以不要使用它。