此C程序打印Done
,然后进入无限循环。
#include <stdio.h>
int main(int argc, char const *argv[])
{
printf("Done");
while (1) {}
return 0;
}
但是当我运行它时,此代码不打印Done
。那是为什么?
答案 0 :(得分:3)
需要刷新缓冲区。通常,控制台输出在收到'\n'
之前不会刷新。
这有一个很少使用的功能,fflush()
。
#include <stdio.h>
int main(int argc, char const *argv[])
{
printf("Done");
fflush(stdout);
while (1) {}
return 0;
}
那应该打印给你。
答案 1 :(得分:3)
stdout是缓冲的。它不会打印直到它被刷新(例如,但是击中换行符)。
您只需在'\n'
来电中添加printf
:
printf("Done\n");
或通过调用
禁用其缓冲setbuf(stdout, NULL);
答案 2 :(得分:2)
在fflush(stdout);
声明后添加printf
。 stdout
默认情况下通常是行缓冲的。