1
int main()
{
printf("Whats up");
sleep(3);
printf("StackOverflow? All having a nice day? ");
}
为什么输出3秒后“Whats up Stack ..”而不是第一个“Whats up”然后3秒后剩下的?睡眠命令执行不是我预期的
int main()
{
printf("Whats up");
sleep(3);
printf("StackOverflow? All having a nice day? ");
}
为什么输出3秒后“Whats up Stack ..”而不是第一个“Whats up”然后3秒后剩下的?睡眠命令执行不是我预期的
这是因为stdout
通常是行缓冲。所以你的C库缓冲输出。您可以通过在printf()
中使用\n
或致电fflush(stdout)
来清除此问题。
printf("Whats up\n");
或
fflush(stdout); // call after the printf
您也可以关闭缓冲与setbuf()
:
setbuf(stdout, 0);
一个快速的注意,不直接相关的有机磷农药的问题,但仍然具有现实意义。如果你在linux上使用换行符来刷新缓冲区,将只能在终端上运行,并且不能在文件重定向上工作 – JackVanier