【发布时间】:2018-03-04 05:55:16
【问题描述】:
我必须使用getchar() 函数一一获取许多字符。
我必须在使用该功能后清理缓冲区,但flushall() 不这样做。在函数的第二次迭代之后,它得到'\n' 作为输入。我尝试使用fflush()、_flushall(),但没有人成功。这是什么原因?请帮忙。
注意:我必须使用getchar()。
int i;
char c;
for (i = 0; i < 5; i++)
{
c = getchar();
printf("%c", c);
_flushall();
}
【问题讨论】:
-
你的代码在哪里?目前还不清楚您要做什么。
-
_flushall;=>_flushall();。您实际上并没有调用该函数,您只是在评估(并丢弃)指向它的指针。 -
约翰·博德,_flushall() 不起作用。好吧,为什么我必须写所有这些而不是使用flush?
-
谢谢!这样可行!我仍然很想知道为什么冲洗不起作用。有人可以帮忙吗?
-
@Asher 因为 stdio 中的“刷新”并不代表您的想法。它确实不是的意思是,“把输入缓冲区中的任何东西都拿走,然后扔掉。”它的实际意思是“获取 output 缓冲区中的任何内容,并确保将其实际写入应该去的地方。”
标签: c input buffer flush getchar