In C ist das Drucken auf Standardausgabe mit printf
from einfach stdio.h
.
Wie kann man jedoch auf stderr drucken? Wir können fprintf
es anscheinend verwenden , um es zu erreichen, aber seine Syntax scheint seltsam. Vielleicht können wir verwenden printf
, um auf stderr zu drucken?
fprintf
.Antworten:
Die Syntax ist fast die gleiche wie
printf
. Mitprintf
geben Sie das Zeichenfolgenformat und seinen Inhalt an, dh:Damit ist
fprintf
es dasselbe, außer dass Sie jetzt auch den Ort angeben, an den gedruckt werden soll:Oder in Ihrem Fall:
quelle
Beispiele:
quelle
stderr ist normalerweise ungepuffert und stdout normalerweise. Dies kann zu einer seltsam aussehenden Ausgabe wie dieser führen, was darauf hindeutet, dass der Code in der falschen Reihenfolge ausgeführt wird. Es ist nicht so, es ist nur so, dass der Standardpuffer noch geleert werden muss. Umgeleitete oder weitergeleitete Streams würden diese Verschachtelung natürlich nicht sehen, da sie normalerweise nur die Ausgabe von nur stdout oder nur stderr sehen würden.
Obwohl anfangs sowohl stdout als auch stderr an die Konsole kommen, sind beide getrennt und können einzeln umgeleitet werden.
quelle
Wissen Sie
sprintf
? Es ist im Grunde das gleiche mitfprintf
. Das erste Argument ist das Ziel (die Datei im Fall vonfprintf
dhstderr
), das zweite Argument ist die Formatzeichenfolge und der Rest sind die Argumente wie gewohnt.Ich empfehle auch diese
printf
(und Familien-) Referenz .quelle
Wenn Sie aktuelle Codes nicht ändern möchten und nur für die Debug-Verwendung.
Fügen Sie dieses Makro hinzu:
Wechseln Sie
stderr
zu,stdout
wenn Sie einen Rollback durchführen möchten.Es ist hilfreich für das Debuggen, aber es ist keine gute Praxis.
quelle
Um Ihren Kontext zu drucken, können Sie Code wie folgt schreiben:
quelle