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
stderrinstead usingfprintf(stderris unbuffered by default):fprintf(stderr, "I will be printed immediately"); -
Flush
stdoutwhenever you need it to usingfflush:printf("Buffered, will be flushed"); fflush(stdout); // Will now print everything in the stdout buffer -
Disable buffering on stdout by using
setbuf:setbuf(stdout, NULL); -
Or use the more flexible
setvbuf:setvbuf(stdout, NULL, _IONBF, 0);