La fonction printf en c n'imprime pas toujours la sortie à l'écran. Par exemple, si vous oubliez de mettre \n à la fin de la chaîne que vous imprimez, il arrive que vous n'obteniez pas l'o/p. Existe-t-il d'autres conditions dans lesquelles printf n'imprime pas ? Je me souviens que quelqu'un a dit qu'il y avait 7 conditions de ce type. Pouvez-vous m'aider ?
Réponses
Trop de publicités?La sortie standard est un flux mis en mémoire tampon, il n'est pas garanti qu'il se vide à moins qu'une nouvelle ligne soit insérée, que le flux soit fermé ou que le programme sorte normalement. Si le programme se termine de manière anormale, il est possible que le flux ne se vide pas. La sortie standard est mise en tampon par ligne, c'est pourquoi une nouvelle ligne la purgera. Il existe des tampons qui ne se videront pas avec une nouvelle ligne.
Ce n'est pas ça printf
ne s'imprimera pas toujours, c'est qu'il n'est pas garanti que l'impression soit immédiate. Cela signifie que si vous l'utilisez à des fins de débogage, vous ne pouvez pas garantir que cela se produira exactement au moment où cela se produit dans le code. Si vous voulez être sûr qu'il s'imprime exactement au moment où vous l'avez dit, appelez la commande fflush(stdout)
.
Note : Vous ne voulez généralement pas utiliser fflush(stdout)
à moins que vous ne déboguiez, il est très gourmand en ressources et si vous vous souciez un tant soit peu de la rapidité des performances, il a le potentiel de vous ralentir.
Comme utilisateur1214634 dit que stdout est mis en mémoire tampon et n'imprime à l'écran que sous certaines conditions. Si vous voulez forcer l'impression, vous pouvez appeler fflush(stdout).