为什么printf
除非格式字符串中有换行符,否则调用后不会刷新?这是 POSIX 行为吗?我怎么可能有printf
每次都立即冲水?
The stdout
默认情况下,流是行缓冲的,因此只会在到达换行符(或被告知时)后显示缓冲区中的内容。您有几个选项可以立即打印:
-
打印到stderr
而是使用fprintf
(stderr
is 默认情况下不缓冲):
fprintf(stderr, "I will be printed immediately");
-
Flush stdout
每当你需要它时使用fflush
:
printf("Buffered, will be flushed");
fflush(stdout); // Will now print everything in the stdout buffer
-
通过使用禁用标准输出上的缓冲setbuf
:
setbuf(stdout, NULL);
-
或者使用更灵活的setvbuf:
setvbuf(stdout, NULL, _IONBF, 0);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)