Kein Output mehr!
-
Guten Tag liebe Community,
ich hab ein richtig ätzendes Problem: Ich habe bei printf keinen Output mehr! Nur noch als Filehandle. Ist mein System kaputt? Beispiel:
#include <stdio.h> int main() { printf("Hallo"); return 0; }
Nun compile ich das ganze nach compiled.exe!
C:\> compiled.exe C:\>
Nix passiert beim ausführen! Aber:
C:\> compiled.exe > test.txt C:\> type test.txt Hallo C:\>
Inhalt der test.txt: "Hallo"
Hatte jemand von euch schonmal ein ähnliches Problem? Ist mein System kaputt?
Edit: Dasselbe bei cout.
-
printf schreibt auf stdout, stdout leitest du aber mit "> test.txt" in die Datei um!
Also mach das "> test.txt" weg und du siehst stdout wieder auf deinem Bildschirm.Dasselbe gilt für stderr. Wenn du z.B. mit fprintf auf stderr schreibst, würdest du etwas auf dem Bildschirm sehen, solange du die Ausgabe nicht mit "2> test.txt" in die Datei umleitest.
Wenn du die Ausgabe in die Datei *und* auf dem Bildschirm haben willst, könntest du z.B. auf stdin *und* stdout schreiben.
Beispiel:
void print_something(char* str) { fprintf(stdin, "%s", str); /* für die Datei */ fprintf(stderr, "%s", str); /* für den Bildschirm */ } /* ... */ print_something("hallo, welt\n");
Wenn du jetzt mit ">" stdin umleitest, landet stderr trotzdem auf dem Bildschirm.
Wenn du hingegen gar nicht umleist und ./program.exe so aufrufst, wirst du die Ausgabe doppelt sehen.