Heim > Artikel > Backend-Entwicklung > Wie können Sie ein End-of-File-Signal (EOF) im Standard-Eingabestream (stdin) simulieren, wenn dieser sich im interaktiven Modus befindet?
Ende der Datei (EOF) des Standard-Eingabestreams (stdin)
Bei der Verwendung von stdin als Eingabequelle für Programme ist es selbstverständlich, dass Ich frage mich, ob es eine End-of-File-Anzeige (EOF) unterstützt. Die Art der Standardeingabe variiert je nach Konfiguration.
stdin mit Eingabe aus einer Datei
Wenn stdin von einer Datei umgeleitet wird, weist es von Natur aus einen EOF auf markieren, ähnlich wie bei regulären Dateistreams. Dies liegt daran, dass Dateien einen definierten Endpunkt haben und wenn der Lesevorgang das Ende der Datei erreicht, tritt die EOF-Bedingung auf.
stdin von der Konsole
Allerdings , Standardeingaben von der Konsole, bekannt als interaktiver Modus, verfügen von Natur aus nicht über einen EOF-Indikator. Dies liegt daran, dass Konsoleneingaben normalerweise ein kontinuierlicher Strom von Zeichen sind, die vom Benutzer eingegeben werden.
Simulieren von EOF im Konsolenmodus
Um ein EOF im Konsolenmodus zu simulieren, müssen Plattform- Es können bestimmte Tastenkombinationen verwendet werden:
Beim Drücken dieser Tastenkombinationen wird die Das Programm behandelte es, als ob die Eingabe ihr Ende erreicht hätte.
Manuelles Hinzufügen von EOF zu stdin
Wie bereits erwähnt, wird stdin von der Konsole als unendlicher Stream betrachtet. Um ein EOF manuell hinzuzufügen, muss der Benutzer es explizit mit den Tastenkombinationen Strg D oder Strg Z angeben.
Lösung mit fread- oder read-Funktionen
Im bereitgestellten Code Beispiel mit fread oder read, die Schleife wird auf unbestimmte Zeit fortgesetzt, bis EOF auftritt. Um in diesem Szenario manuell eine EOF-Bedingung hinzuzufügen, verwenden Sie den folgenden Ansatz:
<br>int c;<br>while ((c = read(0, buffer, BUFSIZ)) > 0) {</p> <pre class="brush:php;toolbar:false">// Read and process data from stdin
}
// Wenn Strg D oder Strg Z gedrückt wird, ist c -1, was EOF anzeigt
if (c == -1) {
// Handle EOF condition
}
Auf diese Weise kann die Schleife beendet werden, wenn der Benutzer die EOF-Kombination drückt, sodass das Programm das Ende der Eingabe entsprechend behandeln kann.
Das obige ist der detaillierte Inhalt vonWie können Sie ein End-of-File-Signal (EOF) im Standard-Eingabestream (stdin) simulieren, wenn dieser sich im interaktiven Modus befindet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!