【发布时间】:2021-09-19 15:52:06
【问题描述】:
我正在学习 c,但我被教程中的一些代码卡住了。
#include <stdio.h>
int main() {
fprintf(stdout, "This is to stdout. ");
fprintf(stderr, "This is to stderr. ");
fprintf(stdout, "This is also to stdout. ");
}
他们得到的结果是
This is to stderr. This is to stdout. This is also to stdout.
这是不正常的 但我得到的是
This is to stdout. This is to stderr. This is also to stdout.
这是有序的。 所以这很奇怪,为什么我得到了不同的结果? (我指的是https://www.journaldev.com/39049/fflush-in-c)
【问题讨论】:
-
通常
stdout是行缓冲,stderr是无缓冲。 -
和标准输出可以设置为无缓冲以立即刷新
-
@KamilCuk 这对我来说完全有道理,但是在执行与上面相同的代码后我得到了不同的结果
-
你是如何运行程序的?从命令行?直接输出到终端窗口还是发送到管道或文件?
-
@EricPostpischil 由cmd运行,我发现实现中stdout无缓冲的问题。