printf具有无限while循环的异常行为

时间:2013-10-09 11:17:28

标签: c while-loop printf

当我运行以下程序时,我没有得到任何输出。

#include <stdio.h>

int main()
{
    printf("hello");
    while(1)
    {

    }   
    return 0;
}

如果我编辑printf命令以在字符串的末尾添加'\ n'字符,那么预期的输出就会出现。第一个代码中发生了什么?我根本无法理解。

4 个答案:

答案 0 :(得分:11)

这是因为stdout 行缓冲,即输出不会写入设备(终端),直到收集完一行。

您可以调用fflush(stdout);强制将缓冲区刷新到终端。不要试图冲洗stdin,这是不允许的。

答案 1 :(得分:2)

尝试

printf("hello\n");

printf("hello");
fflush(stdout)

答案 2 :(得分:0)

您应该在输出结尾处打印换行符。否则它将调用未定义的行为(至少可能是未定义的)。

答案 3 :(得分:0)

使用printf("hello\n");

有关详细信息,请参阅this question的答案。