C printf und fprintf (stdout,) werden nicht gedruckt

8

Das ist ein bisschen seltsam. Mein Code gab nicht aus, was ich dachte, dass es sollte. Ich habe einige Druckanweisungen in verschiedenen Phasen hinzugefügt, um zu sehen, wo es falsch gelaufen ist. Immer noch nichts. Also habe ich am Anfang von main eine printf-Anweisung hinzugefügt. Dort wurde ich wirklich verwirrt.

Ich nahm also an, dass mit den Dateideskriptoren etwas Lustiges passierte. Ich habe die printf in eine fprintf geändert. Immer noch nichts. Drucken in stderr mit fprintf funktioniert! Warum passiert das?

Das Entfernen aller Elemente aus main mit Ausnahme der ursprünglichen print-Anweisung und der Rückgabe wird gedruckt.

Code

%Vor%     
Hector 09.02.2013, 02:37
quelle

1 Antwort

17

Die Ausgabe wird oft vom System gepuffert. Sie können fflush aufrufen, aber manchmal reicht es aus, die Ausgabe mit einem Zeilenumbruch zu beenden, je nachdem, wie das Caching funktioniert. Versuchen Sie also,

zu ändern %Vor%

bis

%Vor%

Und wenn das nicht hilft,

%Vor%

(Und stderr wird oft nicht zwischengespeichert, da Sie sofort Fehler sehen möchten.)

Schließlich sehen Sie die Ausgabe, wenn das Programm beendet ist (da Dinge dann geleert werden), was wahrscheinlich den Rest des Verhaltens erklärt.

    
andrew cooke 09.02.2013, 02:41
quelle

Tags und Links