C sleep命令的执行方式与我预期的不同

C sleep命令的执行方式与我预期的不同,c,C,为什么在3秒钟后输出“Whats up Stack…”,而不是先“Whats up”,然后在3秒钟后输出其余的内容?这是因为标准输出通常是行缓冲的。因此,您的C库缓冲输出。您可以使用printf()中的\n或调用 或 您还可以通过以下方式关闭缓冲: 这是因为stdout通常是行缓冲的。因此,您的C库缓冲输出。您可以使用printf()中的\n或调用 或 您还可以通过以下方式关闭缓冲: 作为一个简短的提示,这与OPs问题没有直接关系,但仍然相关。如果您在linux上使用换行符刷新缓冲区只在终端上起

为什么在3秒钟后输出“Whats up Stack…”,而不是先“Whats up”,然后在3秒钟后输出其余的内容?

这是因为标准输出通常是行缓冲的。因此,您的C库缓冲输出。您可以使用
printf()
中的
\n
或调用

您还可以通过以下方式关闭缓冲:


这是因为
stdout
通常是行缓冲的。因此,您的C库缓冲输出。您可以使用
printf()
中的
\n
或调用

您还可以通过以下方式关闭缓冲:


作为一个简短的提示,这与OPs问题没有直接关系,但仍然相关。如果您在linux上使用换行符刷新缓冲区只在终端上起作用,而不在文件重定向上起作用,那么请注意,这与OPs问题没有直接关系,但仍然相关。如果您在linux上使用换行符刷新缓冲区,则只会在终端上工作,而不会在文件重定向上工作
int main()
{
  printf("Whats up");
  sleep(3);
  printf("StackOverflow? All having a nice day? ");
}
  printf("Whats up\n");
fflush(stdout); // call after the printf
setbuf(stdout, 0);