在C ..中的sleep()行为?

Ado*_*orn 2 c linux sleep

可能重复:
为什么printf在调用后不会刷新,除非换行符在格式字符串中?

我试图在论坛上回答一些问题,我遇到了很有趣的事情.这是代码:

int main()
{
 int print_val = -1;

 while(1)
 {
  printf("%d \n", ++print_val);
  sleep(1);
 }
}
Run Code Online (Sandbox Code Playgroud)

这很完美.现在乐趣进入..只需将第7行更改为 printf("%d ", ++print_val);(只需删除换行!)

现在没有输出..!

那么任何人都可以帮我理解sleep()函数的行为..?我认为需要查看sleep()而不是printf(),因为我尝试用fprintf()和putc()替换它,只给出相同的输出.

我在32位Ubuntu以及虚拟机中的32位Ubuntu上尝试过这段代码.

谢谢阿多恩

CCo*_*der 6

我觉得问题在于刷新输出缓冲区.如果你没有在字符串的末尾添加'\n',那么输出缓冲区将不会被刷新,printf将不会打印任何内容.它只会在输出缓冲区已满时开始打印.请看这个问题和这个问题.