我有一些重复运行的代码:
printf("你想继续吗?是/否:\n");
继续播放= getchar();
接下来我的代码正在运行,它不会等待输入。
我发现 getchar 在第二次使用 '\n' 作为字符。
我猜测这是由于 sdio 有一些缓冲区,因此它保存了最后的输入“Y\n”或“N\n”。
我的问题是,在使用 getchar 之前如何刷新缓冲区,这将使 getchar 等待我的答案?
刷新输入流会导致未定义的行为。
int fflush(FILE *ostream);
ostream 指向输出流或
一个更新流,其中最
未输入最近操作,则
fflush 函数会导致任何未写入的
要传送的该流的数据
到要写入的主机环境
到文件;否则,该行为
未定义。
要正确刷新输入流,请执行以下操作:
int main(void)
{
int ch;
char buf[BUFSIZ];
puts("Flushing input");
while ((ch = getchar()) != '\n' && ch != EOF);
printf ("Enter some text: ");
if (fgets(buf, sizeof(buf), stdin))
{
printf ("You entered: %s", buf);
}
return 0;
}
See 为什么 fflush(stdin) 是错误的 and 刷新输入缓冲区.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)