此代码工作正常:
int main()
{
while(1){
printf("hi\n");
sleep(1);
}
return 0;
}
输出: 嗨 嗨 嗨 ...
但是当我们删除'\ n'时它什么都不打印?
int main()
{
while(1){
printf("hi");
sleep(1);
}
return 0;
}
输出: 没有输出
Plz任何人都会解释这种行为:)
答案 0 :(得分:1)
stdout
如果默认缓冲,那么要清除它,你应该\n
或完全填充内部缓冲区。如果不希望出现此类行为,您可以使用fflush(stdout)
手动刷新,或使用setbuffer(stdout, NULL, 0)
关闭缓冲。
答案 1 :(得分:0)
您没有看到任何打印的原因是因为输出是缓冲的。
当你后缀为n时看到打印的原因是在某些系统上,换行会导致缓冲区刷新。您可以像这样手动刷新标准输出:
int main()
{
while(1)
{
printf("hi");
fflush(stdout);
sleep(1);
}
return 0;
}