sleep()在无限循环中如果没有以\ n结束则不打印值

时间:2016-07-18 06:54:13

标签: c++ c

此代码工作正常:

int main()
{
while(1){

printf("hi\n");
sleep(1);
}

return 0;
}

输出: 嗨 嗨 嗨 ...

但是当我们删除'\ n'时它什么都不打印?

int main()
{
while(1){

printf("hi");
sleep(1);
}

return 0;
}

输出: 没有输出

Plz任何人都会解释这种行为:)

2 个答案:

答案 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;
}