Pourquoi ma sortie ne s’imprime-t-elle que s’il y a une autre impression après?

Petit insecte intéressant ici:

if (host != NULL) { printf("hi"); } else { printf("FAIL"); } return 0; 

n’imprime rien du tout, mais:

 if (host != NULL) { printf("hi"); } else { printf("FAIL"); } fprintf(stdout, "\n%s\n", (char *)&additionalargs); return 0; 

empreintes

salut

abc

Quelqu’un sait pourquoi c’est comme cela?

La différence réside dans les \ n caractères.

Lorsque vous imprimez des caractères, ils sont accumulés dans une mémoire tampon qui n’est pas envoyée au périphérique de sortie tant qu’un caractère de fin de ligne n’a pas été envoyé.

La sortie de printf sur stdout est mise en mémoire tampon. Vous voudrez peut-être regarder fflush

essayez d’utiliser fflush(stdout) avant votre condition if .