问题描述
我知道 fflush(stdin)
根据标准,这是未定义的行为。但是当涉及到 stdout
时,就没有这样的限制。我做了谷歌以获得使用 stdout
作为 fflush
的参数的概念,但我无法得到它。
有人可以用一个简单的例子详细说明以 fflush
作为参数的 stdout
函数吗?
解决方法
在打印时(例如 printf
),输出被放入缓冲区,并且在显示换行符之前可能不会写入控制台。为确保缓冲区中的所有内容都写入控制台,可以使用 fflush(stdout)
。
一个例子是显示某个进程的进度:
for(int i = 0; i < 100; i++)
{
<...calculation...>
printf("."); // Print a dot after each iteration to show progress
fflush(stdout); // The dot may be buffered. This ensures that it is displayed immediately
}