Ich lese gerade das Buch von K&R und tippe die Beispiele aus dem ersten Abschnitt ein, und es gibt ein paar Beispiele wie dieses:
while((c = getchar()) != EOF) {
//do something
}
Ich teste diese Beispiele auf einer Windows-Box und führe daher die kompilierten Exe-Dateien aus cmd prompt.
Um das obige Beispiel zu testen, wie simuliere ich eine EOF? Das heißt, wie kann ich im Grunde die Schleife stoppen, wenn ich das Beispiel von der Eingabeaufforderung aus teste?
Greg Hewgill
Um einen EOF einzugeben, verwenden Sie:
^Z (StrgZ) unter Windows
^D auf Unix-ähnlichen Systemen
Einige nützliche Ergänzungen: Wenn Sie sich in einer Zeile befinden, die nicht leer ist, müssen Sie ^D zweimal drücken: Einmaliges Drücken wird diese Zeile leeren, ein weiteres Mal drücken wird EOF senden. Wenn Sie sich in einer leeren Zeile befinden, reicht ein ^D.
– Johannes Schaub – litb
13. Juli 2009 um 11:38 Uhr
Das ist das HTML-Element .
– Greg Hewgill
13. Juli 2009 um 12:02 Uhr
Unter Windows erzeugt die Eingabe von ^Z nur dann EOF, wenn sie am Anfang einer Zeile erfolgt.
Sie können EOF auch simulieren, indem Sie der int-Variable explizit den Wert -1 zuweisen.
Schauen Sie sich diesen Code für mehr Klarheit an:
#include<stdio.h>
int main() {
// char ch=getchar()
// int ch=-1;
if(ch==EOF) { printf("\nEOF: %d",EOF); }
if((ch!=EOF)==0) { printf("\nit is equal to 0"); }
if((ch!=EOF)==1) { printf("\nit is equal to 1"); }
else { printf("\n it is equal to other value"); }
system("pause");
return 0;
}
Toffy_
Ich hatte das gleiche Problem nach dem Pressen Strg+d Programm gestoppt und 0 zurückgegeben. Wenn Sie verwenden Klion Drücken Sie Strg+Umschalt+a als geben Sie Registry ein, drücken Sie die Eingabetaste und vergewissern Sie sich Prozesse.mit.pty.ausführen. ist ungeprüft. Danach kompilieren Sie das Programm erneut und dann können Sie Eingaben eingeben, aber nicht drücken Strg+d in der gleichen Zeile wie die Eingabe es wird 0 oder Fehler zurückgeben.
14130200cookie-checkWie simuliert man einen EOF?yes