Wie Verwenden von Stream Input in C-Programmierung

Die Basis-Eingabe / Ausgabe-Funktionen in C sind nicht interaktiv, was bedeutet, dass sie nicht sitzen und warten Sie Text über die Tastatur eingeben. Das ist die Art, wie Sie erwarten, dass ein Computerprogramm zu verwenden: Sie geben Eingang, und das Programm reagiert direkt. Aber die Standardeingabe in C ist nicht Charakter basiert, ist es Strom basiert.

Menu

Mit Stream-basierte Eingang, ein Programm sieht am Eingang, als ob es aus einer Kanne gegossen wurden. Alle Charaktere, einschließlich Eingabe, in einer nach dem anderen marschieren. Erst nach einem bestimmten Textblock empfangen wird, oder Eingang stoppt insgesamt, wird der Strom Ende. Dieses Konzept kann auf jedem Anfang C-Programmierer frustrierend sein.

Grundlagen der Stromeingang

Betrachten Sie den Code dargestellt in Vereitelt durch Stream Input. Es scheint, dass der Code liest Eingang, bis die Zeit auftritt. An diesem Punkt würden Sie davon ausgehen, dass die Eingabe aufhören würde, aber das ist nicht Strom Eingang antizipieren.

VON STREAM INPUT VEREITELTE

# include int main () {char i-do {i = getchar () - putchar (i) -} while (i =! '.') - putchar ( ' n') - return (0) -}

Übung 1: Geben Sie den Quellcode aus durch Stream Input in einen Editor Vereitelt. Erstellen Sie und führen Sie das Programm auszuprobieren. Geben Sie viel Text und einen Zeitraum, um zu sehen, was passiert.

Hier ist, wie es läuft:

Das ist ein Test. Es's nur ein Test.Das ist ein Test.

Im Allgemeinen wird das Programm nicht Eingang stoppen, nachdem Sie einen Zeitraum eingeben. Die erste Zeile in dem vorhergehenden Beispiel ist der Strom, wie ein Feuerwehrschlauch Schießen Zeichen in das Programm. Das Programm verhält sich richtig, die Verarbeitung, den Strom und Anhalten seiner Anzeige, nachdem die Zeit auftritt. Die Enter-Taste dient als eine Pause im Strom, der das Programm verwendet Eingang bis zu diesem Punkt zu verdauen.

Wie mit Stromeingang zu beschäftigen

Trotz der Strom Ausrichtung der C-Sprache, bestehen Möglichkeiten, um mehr oder weniger interaktive Programme zu erstellen. Sie müssen einfach nur Strom Eingang umarmen und entsprechend damit umgehen.

Der Quellcode in Fischen für Charaktere im Strom sollte man ziemlich einfach sein. Die getchar () Funktion holt zwei Zeichen und dann werden die Zeichen auf Zeile 11 angezeigt.

FISCHEN FÜR PERSONEN IM STREAM

# include int main () {char ersten, zweiten printf ( "Geben Sie den ersten Anfangs:") -first = getchar () - printf ( "Ihre zweite Anfangs Typ:") -zweiten = getchar () - printf ( "Ihr Initialen sind '% c' und '% c' n ", erste, zweite) -return (0) -}

Übung 2: Geben Sie den Quellcode von Fischen für Charaktere im Strom in Ihren Editor. Zeile 11 wird geteilt, so dass es Sie nicht Wrap-nicht die Zeile in Ihrem Editor aufteilen. Erstellen Sie und führen Sie Ihre Initialen als Eingabe verwendet.

Hier ist die Ausgabe:

Geben Sie Ihre erste Anfangs: DGeben Sie Ihre zweite Anfangs: Ihre Initialen sind 'D' und ''

Es gab nie eine Chance, Ihre zweite Anfangs einzugeben. Der Strom enthalten die Enter-Taste drücken, die das Programm als Eingabe für das zweite getchar () Funktion akzeptiert. Das Zeichen, n, wird in der Ausgabe zwischen den einfachen Anführungszeichen angezeigt.

Wie Sie das Programm ausführen? Ganz einfach: Geben Sie die beiden Initialen an der ersten Aufforderung:

Geben Sie Ihre erste Anfangs: DGGeben Sie Ihre zweite Anfangs: Ihre Initialen sind 'D' und 'G'

Natürlich, das ist nicht das, was der Code fragt. So wie Sie es beheben? Können Sie von einer Lösung denken, dass Ihre aktuellen Programmierer Tasche o 'Tricks?

Nicht aufgeben!

Die Lösung ist eine Funktion zu entwickeln, die das erste Zeichen im Strom zurückkehrt und dann schluckt den Rest der Zeichen, bis die n angetroffen wird. Diese Funktion sieht aus wie ein Ein-Zeichen-Eingangs-Funktion, Getch ():

Ein Ein-Zeichen-Eingabefunktion Getch ()

char getch (void) {char ch-ch = getchar () - während (getchar () = ' n'!) - return (ch) -}

Um Ihr Gehirn um Strom-Eingang, der Ansicht, dass die while-Schleife in ein Ein-Zeichen-Eingangs-Funktion wickeln, Getch ()in dem Strom den gesamten Text dreht durch, bis ein Newline angetroffen wird. Dann wird der erste Charakter in dem Strom, griff nach der Linie 5 wird von der Funktion zurückgegeben.

Übung 3: Ändern Sie den Quellcode von Übung 2, so dass die getch () Funktion in ein Ein-Zeichen-Eingangs-Funktion dargestellt ist, Getch ()wird verwendet, Eingang zu sammeln. Aufbau und Betrieb, um sicherzustellen, dass die Ausgabe ist, was der Benutzer antizipieren würde.

Wenn Sie wirklich interaktive Programme möchten, verwenden Sie eine Sprache C-Bibliothek, die interaktiven Funktionen bietet. Die NCurses Bibliothek ist groß, weil es sowohl Ein- und Ausgabefunktionen, die Sie Vollbild-Textprogramme erstellen kannst, die sofort interaktiv sind.

Menü