开发者

Strange behaviour with fputs and a loop

开发者 https://www.devze.com 2022-12-23 22:22 出处:网络
When running the following code I get no output but I cannot work out why. # include <stdio.h> int main()

When running the following code I get no output but I cannot work out why.

# include <stdio.h>

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

    while (1);

    return 0;
}

Without the while loop it works perfectly but as soon as I add it in I get no output.开发者_运维技巧 Surely it should output before starting the loop? Is it just on my system? Do I have to flush some sort of buffer or something?

Thanks in advance.


You have to flush stdout. This happens automatically when you write a newline character. Change the fputs to:

fputs("hello\n", stdout);

Or to:

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


I guess asking the question helped me find the solution. Flushing is required with fflush(..)

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


fflush(stdout);


Why should it? The stdio functions doesn't know what's happening outside, and surely won't know an infinite loop is coming. The buffer will be flushed only when it is full or explicitly requested.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号