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 using fprintf (stderr is unbuffered by default):
fprintf(stderr, "I will be printed immediately");
Flush stdout whenever you need it to using fflush:
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);