fputs和循环的奇怪行为

时间:2010-03-22 07:32:29

标签: c++ c gcc loops stdout

运行以下代码时,我没有输出,但我找不到原因。

# include <stdio.h>

int main()
{
    fputs("hello", stdout);

    while (1);

    return 0;
}

没有while循环它可以很好地工作但是只要我添加它就没有输出。当然它应该在开始循环之前输出?它只是在我的系统上吗?我是否需要冲洗某种缓冲区或什么?

提前致谢。

4 个答案:

答案 0 :(得分:5)

你必须刷新stdout。当您编写换行符时,会自动发生这种情况。将fputs更改为:

fputs("hello\n", stdout);

或者:

fputs("hello", stdout);
fflush(stdout);

答案 1 :(得分:0)

为什么要这样? stdio函数不知道外面发生了什么,肯定不会知道无限循环即将到来。仅当缓冲区已满或明确请求时才会刷新缓冲区。

答案 2 :(得分:0)

我想问这个问题有助于我找到解决方案。 fflush(..)

需要冲洗

http://www.thinkage.ca/english/gcos/expl/c/lib/fflush.html

答案 3 :(得分:0)

fflush(stdout);