Schreibt ein Programm, das auf "stdout" schreibt, in eine Datei? der Bildschirm? Ich verstehe nicht, was es bedeutet, auf stdout zu schreiben.Was bedeutet es, auf stdout in C zu schreiben?
Antwort
Das bedeutet, dass Sie die Ausgabe auf dem Hauptausgabegerät für die Sitzung drucken ... was auch immer das sein mag. Die Konsole des Benutzers, eine Sitzung, eine Datei oder wer weiß was. Was dieses Gerät sein kann, hängt davon ab, wie das Programm ausgeführt wird und von wo.
Der folgende Befehl zu dem Standardausgabegerät schreibt (stdout) ...
printf("hello world\n");
die nur eine andere Art und Weise ist im Wesentlichen vor, dies zu tun ...
fprintf(stdout, "hello world\n");
In Dieser Fall stdout
ist ein Zeiger auf einen FILE
Stream, der das Standard-Ausgabegerät für die Anwendung darstellt. Sie könnten auch
fprintf(stderr, "that didn't go well\n");
, in dem Fall, dass Sie würde das Senden die Ausgabe an das Standardfehlerausgabegerät für die Anwendung, die kann oder auch nicht, die gleichen wie stdout
verwenden könnten - wie bei stdout
, stderr
ist ein Zeiger auf einen FILE
Stream, der das Standardausgabegerät für Fehlermeldungen darstellt.
Gibt es ein Beispiel in C des Befehls auf stdout schreiben? Wird eine einfache printf-Anweisung in stdout geschrieben? Was ist mit dem Schreiben in eine Datei mit write()? – user2227422
'printf' schreibt standardmäßig auf' stdout', wenn Sie in einen bestimmten Stream schreiben möchten, sollten Sie 'fprintf' verwenden, das eine' FILE * 'als Zielstream akzeptiert. – Jack
sehe meine Bearbeitungen ... hoffentlich helfen sie dir zu klären –
stdout
ist der Standard-Ausgabestream unter UNIX. Siehe http://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#Standard-Streams. Wenn Sie in einem Terminal arbeiten, sehen Sie im Terminal Daten, die an stdout
geschrieben sind, und Sie können es wie gewünscht umleiten.
stdout
steht für standard output stream und es ist ein Stream, der für Ihr Programm vom Betriebssystem selbst verfügbar ist. Es steht Ihrem Programm bereits von Anfang an zusammen mit stdin
und stderr
zur Verfügung.
Was sie zeigen (oder von), kann alles sein, tatsächlich stellt der Stream Ihrem Programm nur ein Objekt zur Verfügung, das als Schnittstelle zum Senden oder Abrufen von Daten verwendet werden kann. Standardmäßig ist es normalerweise das Terminal, aber es kann umgeleitet werden, wo immer Sie wollen: eine Datei, ein Pipe goint zu einem anderen Prozess und so weiter.
stdout ist der Standard-Ausgabedateistream. Offensichtlich ist es der erste und Standardzeiger, um den Bildschirm auszugeben, aber Sie können es auf eine Datei wie gewünscht zeigen!
Bitte lesen:
http://www.cplusplus.com/reference/cstdio/stdout/
C++ ist sehr ähnlich zu C jedoch objektorientiert.
Kommt drauf an.
Wenn Sie sich verpflichten, die Ausgabe an stdout
zu senden, überlassen Sie es dem Benutzer im Grunde, zu entscheiden, wohin diese Ausgabe gehen soll.
Wenn Sie printf(...)
(oder das Äquivalent fprintf(stdout, ...)
), sind Sie die Ausgabe an stdout
senden, aber wo das tatsächlich kann landet davon abhängen, wie ich Ihr Programm aufrufen.
Wenn ich Ihr Programm aus der Liste meiner Konsole wie folgt starten, werde ich die Ausgabe auf meiner Konsole sehen:
$ prog
Hello, World! # <-- output is here on my console
aber ich könnte das Programm wie folgt starten, auf der Konsole keine Ausgabe erzeugt:
$ prog > hello.txt
aber ich hätte jetzt eine Datei "hello.txt" mit dem Text "Hallo, Welt!" innen, dank der Umleitungsfunktion der Shell.
Wer weiß - ich könnte sogar ein anderes Gerät anschließen und die Ausgabe könnte dorthin gehen. Der Punkt ist, dass, wenn Sie sich entscheiden, unter stdout
zu drucken (z. B. mit printf()
), dann werden Sie nicht genau wissen, wohin es gehen wird, bis Sie sehen, wie der Prozess gestartet oder verwendet wird.
@K Scott Piel schrieb eine great answer here, aber ich möchte einen wichtigen Punkt hinzufügen.
Beachten Sie, dass der stdout
Strom usually line-buffered ist, so dass der Ausgang, um sicherzustellen, tatsächlich gedruckt wird und nicht nur links im Puffer sitzen noch geschrieben werden Sie müssen den Puffer leeren, indem Sie entweder Ihre printf
Anweisung mit einem \n
Ex:
printf("hello world\n");
oder
printf("hello world");
printf("\n");
oder ähnlich, ODER müssen Sie nach Ihrem printf
Anruf anrufen .
Ex:
printf("hello world");
fflush(stdout);
Lesen Sie mehr hier: Why does printf not flush after the call unless a newline is in the format string?
- 1. Was bedeutet stdout in display_errors in phpinfo()?
- 2. Bedeutet "-" stdout in bash?
- 3. Was bedeutet es, auf GitHub zu verzweigen?
- 4. Capture syscall stdout, ohne in C/C++ Datei zu schreiben
- 5. Was bedeutet [&] bedeutet in C++
- 6. Was bedeutet "==" in C?
- 7. Was bedeutet ".. ::." in C#?
- 8. Was bedeutet :: * in C++?
- 9. Was bedeutet/** in C++
- 10. Was bedeutet/*! */In C#?
- 11. Ist es möglich, stdout mit write_csv() aus readr zu schreiben?
- 12. übergeben Python Stdout zu einer C-Funktion, die schreiben
- 13. Was bedeutet "[das]" in C++ bedeutet
- 14. Was bedeutet() => in C#?
- 15. Was bedeutet: :: in C++ bedeuten?
- 16. Was bedeutet das - C#
- 17. Was bedeutet ?? Operator bedeutet in C#?
- 18. Was bedeutet (void **) in C?
- 19. Was bedeutet es, einen Wert zu normalisieren?
- 20. C# - Was bedeutet "\ 0"?
- 21. Was bedeutet @ in Objective-C?
- 22. Was bedeutet "[*]" (Sternmodifikator) in C?
- 23. Was bedeutet String * in C#?
- 24. Was bedeutet Nullfunktionszeiger in C?
- 25. Was bedeutet "= 0" in C++?
- 26. Was bedeutet es, eine Steckdose zu spülen?
- 27. Was bedeutet "Klasse:" in C++?
- 28. Was bedeutet es, zwei Funktoren zu komponieren?
- 29. Was bedeutet "?" in C++ machen?
- 30. Was bedeutet Operation "| =" in C++?
Es bedeutet, es schreibt Descriptor 1. 'stdout' Datei ist wie eine Konstante Variablennamen, etwas, das jeder benutzt, so dass Sie nicht haben zu erinnern, dass die tatsächliche FD-Nummer ist 1. Zum Beispiel, als ich das zuerst schrieb, dachte ich, es war FD 0 ... :) – CivFan