Why does printf
not flush after the call unless a newline is in the format string? Is this POSIX behavior? How might I have printf
immediately flush every time?
C – Why printf Does Not Flush Without Newline
c++flushprintf
c++flushprintf
Why does printf
not flush after the call unless a newline is in the format string? Is this POSIX behavior? How might I have printf
immediately flush every time?
Best Answer
The
stdout
stream is line buffered by default, so will only display what's in the buffer after it reaches a newline (or when it's told to). You have a few options to print immediately:Print to
stderr
instead usingfprintf
(stderr
is unbuffered by default):Flush
stdout
whenever you need it to usingfflush
:Disable buffering on stdout by using
setbuf
:Or use the more flexible
setvbuf
: