Provavelmente isso tem a ver com o stdio buffering, conforme identificado e explicado anteriormente na seção de comentários. Nos meus projetos MinGW, tenho usado frequentemente o seguinte constructo:
#define disable_stdout_buffering() do { \
setvbuf(stdout, NULL, _IONBF, 0); } while(0)
int main(int argc, char *argv[]) {
disable_stdout_buffering();
/* Your code */
exit(EXIT_SUCCESS);
}
É claro que você também pode adicionar uma chamada a fflush() em uma macro de pré-processamento ou ao enviar seus dados para stdout, no entanto, não adiciona uma chamada de biblioteca adicional a cada buffer gravado em seu console.