En C, l'impression vers stdout est facile, avec printf
from stdio.h
.
Cependant, comment imprimer sur stderr? On peut l'utiliser fprintf
pour y parvenir apparemment, mais sa syntaxe semble étrange. Peut-être pouvons-nous utiliser printf
pour imprimer sur stderr?
fprintf
.Réponses:
La syntaxe est presque la même que
printf
. Avecprintf
vous donnez le format de la chaîne et son contenu c'est-à-dire:Avec
fprintf
c'est la même chose, sauf que maintenant vous spécifiez également l'endroit où imprimer:Ou dans votre cas:
la source
Exemples:
la source
stderr est généralement sans tampon et stdout l'est généralement. Cela peut conduire à une sortie étrange comme celle-ci, ce qui suggère que le code s'exécute dans le mauvais ordre. Ce n'est pas le cas, c'est juste que le tampon stdout n'a pas encore été vidé. Les flux redirigés ou canalisés ne verraient bien sûr pas cet entrelacement car ils ne verraient normalement que la sortie de stdout uniquement ou stderr uniquement.
Bien qu'au départ, stdout et stderr arrivent sur la console, les deux sont séparés et peuvent être redirigés individuellement.
la source
Le savez-vous
sprintf
? C'est fondamentalement la même chose avecfprintf
. Le premier argument est la destination (le fichier dans le cas defprintf
iestderr
), le second argument est la chaîne de format et le reste sont les arguments comme d'habitude.Je recommande également cette
printf
référence (et familiale) .la source
Si vous ne souhaitez pas modifier les codes actuels et uniquement pour une utilisation de débogage.
Ajoutez cette macro:
Passez
stderr
àstdout
si vous souhaitez revenir en arrière.C'est utile pour le débogage, mais ce n'est pas une bonne pratique.
la source
Pour imprimer votre contexte, vous pouvez écrire un code comme celui-ci:
la source