sleep命令执行不是我的预期

Alo*_*lon 1 c

int main()
{
  printf("Whats up");
  sleep(3);
  printf("StackOverflow? All having a nice day? ");
}
Run Code Online (Sandbox Code Playgroud)

为什么3秒后输出"Whats up Stack .."而不是先"Whats up"然后,3秒后剩下的?

P.P*_*.P. 8

这是因为stdout通常是行缓冲的.所以你的C库缓冲输出.您可以使用\nin printf()或通过调用来刷新它fflush(stdout).

  printf("Whats up\n");
Run Code Online (Sandbox Code Playgroud)

要么

fflush(stdout); // call after the printf
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下命令关闭缓冲setbuf():

setbuf(stdout, 0);
Run Code Online (Sandbox Code Playgroud)