I'm just curious which conditions should be satisfied to flush stdout buffer automatically.
First of all I was confused that this pseudo code doesn't print output every iteration:
while (1) { printf("Any text"); sleep(1); } But if I add newline character it will.
After few experiments i found that on my machine stdout buffer is flushed:
- When I put to stdout 1025 characters or more;
- When I read stdin;
- When I put newline character to stdout;
The first condition is totally clear - when the buffer is full it should be flushed. The second one is also reasonable. But why newline character causes flushing? What are the others implicit conditions for this?
'\n'specified to flush the output?fflush(stdout);seems more portable and certain...." so I was not so much informed, as questioned.