搞懂fflush(stdout)
使用 printf 或 cout 打印内容时,输出永远不会直接写入“屏幕”。而是,被发送到 stdout。 (stdout 就像一个缓冲区)
默认情况下,发送到 stdout 的输出然后再发送到屏幕(我们可以根据需要将其重定向到其他文件/流)。同样,stdin 默认映射到键盘,但可以重定向到任何其他文件/流。
现在,默认情况下,stdout 是行缓冲的。这意味着,发送到 stdout 的输出不会被立即发送到屏幕以供显示(或重定向文件/流),直到它在其中获得换行符。因此,如果要覆盖默认缓冲行为,则可以使用 fflush 清除缓冲区(立即将所有内容发送到屏幕/文件/流)。
例子
#include
void delay(unsigned long long ctr)
{
while (ctr > 0)
--ctr;
}
int main()
{
printf("Hello, ");
delay(1000000000ULL);
printf("world!\n");
delay(1000000000ULL);
printf("Welcome.\n");
return 0;
}
过一段时间后输出 hello world! 再过一段时间输出 Welcome.
#include
void delay(unsigned long long ctr)
{
while (ctr > 0)
--ctr;
}
int main()
{
printf("Hello, ");
fflush(stdout);
delay(1000000000ULL);
printf("world!\n");
delay(1000000000ULL);
printf("Welcome.\n");
return 0;
}
立即输出 Hello, 过一段时间输出 world!,又过一段时间输出 Welcome.
就单拿输出到屏幕上来说,printf 这样的函数不是直接打印到屏幕上的,而是先放在一个缓冲区中(stdout)中。如果收到了一个换行符,就会把这个缓冲区的内容打印到屏幕上,并清空。而 fflush 的作用就是直接把缓冲区的内容打印到屏幕上,并清空缓冲区。不必等换行符。
最新发布
-
蕲艾灸贴的功效及价格 介绍2个功效和价格多少钱
2025-05-23 09:49:38 -
梦幻西游175无底洞秒几?
2025-05-05 18:13:44 -
魔兽世界风暴之触属性
2025-05-17 08:52:47 -
CCTV3官网直播页 中国中央电视台综艺频道官方网站直播页
2025-06-13 08:13:52 -
绥德酒店,绥德酒店预订查询,绥德宾馆住宿【携程酒店】
2025-05-20 00:49:46 -
配置根目录
2025-06-06 19:19:49 -
《说文解字》第327课:细说“跪”“跽”,小跪、长跪和拜的区别
2025-06-03 20:51:13 -
酷狗听歌识别音乐在哪里
2025-06-02 07:11:04 -
笔记本cpu温度过高如何解决 笔记本电脑cpu温度过高解决方法【资详解】
2025-05-20 09:53:36 -
卖号的正规交易平台推荐 哪个平台卖号更靠谱
2025-05-28 09:02:40