[Powered by Google Translate] TOMMY: In diesem Video werden wir kennen lernen Umleitung und Rohre. Bisher haben wir schon mit Funktionen wie printf Ausgabedaten an das Endgerät und Funktionen wie GetString um dem Benutzer die Eingabe in unseren bereitzustellen Programm mit der Tastatur. Lassen Sie uns schnell einen Blick auf ein Programm, das eine Reihe von erhält Eingabe von dem Benutzer und gibt es dann. In Zeile 7, wir den Benutzer zur Eingabe einer Zeichenfolge, und dann on line 8, wir drucken es wieder heraus. Lassen Sie kompilieren und ausführen unserem Programm. Great. Der String wir bereitgestellt wird zurückgesendet uns auf dem Terminal. Dies geschah, weil die Funktion printf schrieb ein Datenstrom genannt Standard aus, oder s-t-d-out. Wenn etwas auf die Standardausgabe geschrieben wird, ist es standardmäßig angezeigt durch das Endgerät. Also das ist alles schön und gut, aber was, wenn, statt einfach Anzeige der Saite, wollten wir es in einer Datei speichern? Zum Beispiel könnten wir erinnern wollen, was unsere Programm hat, wenn wir es gab eine bestimmte Eingabe später. Ein Ansatz wäre, diese in unser C-Programm zu tun, mit einige spezielle Funktionen zum Schreiben von Dateien, dass wir sehen in einem anderen Video. Noch einfacher, aber wäre irgendwie redirect stdout in eine Datei. So, wenn printf schreibt stdout, wird der Inhalt in einer Datei anstatt geschrieben werden angezeigt durch das Endgerät. Wir können nur so, dass durch Zugabe eines Größer-als-Zeichen zu tun, gefolgt von einem Dateinamen, der Befehl, den wir verwenden, um unser Programm auszuführen. So, anstatt einfach ausführen. / Redirect, können wir laufen. / umzuleiten, gefolgt von einem Größer-Zeichen, gefolgt von Dateinamen, wie file.txt. Mal sehen, was passiert. OK. Beachten Sie, dass dieses Mal nichts am Terminal angezeigt wurde, aber wir haben nicht die Inhalte unserer modifiziert C-Programm überhaupt. Lassen Sie uns nun untersuchen die Inhalte dieses Verzeichnisses mit ls. Gut. Wir haben jetzt eine neue Datei in unserem Verzeichnis namens file.txt, das ist der Name der Datei lieferten wir, wenn wir unsere rannte Redirect-Programm. Lasst uns eröffnen file.txt. Und hier können wir sehen, dass die stdout aus umzuleiten war geschrieben, um die Datei mit dem Namen file.txt. Also lasst uns laufen den vorherigen Befehl wieder, aber Zuführen eines anderen Eingang dieser Zeit. Okay. Werfen wir einen Blick auf file.txt jetzt. Wir können hier sehen, dass die Datei überschrieben wurde, so dass unsere Original-Eingang ist nicht mehr da. Wenn wir stattdessen wollen diese Datei anzuhängen, Inbetriebnahme der neuen Eingang unter den vorhandenen Inhalt der Datei, können wir mit zwei Größer-als-Zeichen anstelle von nur einem. Lasst uns versuchen. Nun, wenn wir file.txt wieder zu öffnen, können wir sehen, unsere beiden Eingangsleitungen. In einigen Fällen möchten wir vielleicht zu einem entsorgen Ausgabe unseres Programms. Vielmehr als das Schreiben der Ausgabe in eine Datei und dann löschen die Datei, wenn wir damit fertig sind, können wir eine besondere schreiben Datei mit dem Namen / dev / null. Wenn etwas an / geschrieben dev/null-- oder kurz devnull - es wird automatisch verworfen. So der devnull denken, wie ein schwarzes Loch für Ihre Daten. So, jetzt haben wir gesehen, wie die Größer-Zeichen umleiten stdout, lasst uns sehen, wie wir das Umleiten der Standardeingabe in - oder s-t-d-in - das Analogon von stdout. Während Funktionen wie printf in den Stream genannt schreiben stdout, GetString und ähnliche Funktionen aus dem Stream gelesen als stdin, die standardmäßig ist der Strom der Zeichen an der Tastatur eingegeben. Wir können stdin mit dem weniger als Zeichen umzuleiten, gefolgt von einem Dateinamen. Nun anstatt Aufforderung des Benutzers zur Eingabe an die Anschluss wird ein Programm öffnen Sie die Datei, die wir angegeben und verwenden seine Linien als Eingabe. Mal sehen, was passiert. Great. Die erste Zeile hat file.txt zum Endgerät gedruckt weil wir fordern GetString einmal. Wenn wir einen weiteren Anruf musste GetString in unserem Programm, die nächste Zeile file.txt würde als benutzt worden Ein auf diesen Ruf. Auch hier haben wir nicht unser C-Programm modifiziert überhaupt. Wir sind nur verändern, wie wir es laufen. Und auch daran erinnern, haben wir nicht weitergeleitet stdout dieses Mal, so dass die Ausgabe des Programms noch erscheint am Terminal. Wir können natürlich umzuleiten sowohl stdin und stdout wie diese. Nun enthält file2.txt die erste Zeile des file.txt. Also, mit dieser Operatoren, waren wir in der Lage zu lesen und Schreiben von Textdateien. Jetzt wollen wir sehen, wie wir die Ausgabe eines Programms verwenden der Eingang zu einem anderen Programm. Also hier ist ein weiteres einfaches C-Programm I hier hello.c genannt. Wie Sie sehen können, ist dies gibt einfach "Hallo da! "an den Benutzer. Wenn ich will redirect als Eingabe verwenden Sie die Ausgabe von hallo - ein anderes Programm - Ich konnte erste umleiten stdout hallo zu einer Datei namens input.txt, dann leiten Sie den stdin umleiten selben Datei - input.txt. So ich tun kann. / Hallo> input.txt. Drücken Sie die Eingabetaste, um diese auszuführen. Gefolgt von. / Redirect < input.txt und auszuführen, dass. So können wir verkürzen diese ein wenig mit einem Semikolon, das ermöglicht uns, zwei oder mehrere Befehle auf der gleichen Linie verlaufen. So kann ich sagen,. / Hallo> input.txt, Semikolon, . / Redirect Final.txt. Also, wenn wir final.txt öffnen, haben wir genau das, was wir waren Suche nach: eine Liste der eindeutigen Namen in alphabetischer Reihenfolge, gespeichert in einer Textdatei. By the way, konnten wir auch gesagt haben sort < students.txt | uniq> final.txt genau das zu tun dasselbe, mit jedem der Operatoren wir gesehen haben Dieses Video. Mein Name ist Tommy, und dies ist CS50.