Sinn von EOF
-
hallo,
ich hab da mal ein paar Fragen zu EOF. zu erst mal ein Beispiel:#include<stdio.h> int main(){ int c; while((c=getchar())!=EOF){ putchar(c); } return 0; }
1.)Welchen Sinn erfüllt hier EOF(end of file)?das programm tut das selbe wenn ich eof weg lasse.
2.)ich hab mir vorher EOF einmal ausgeben lassen und bekam den wert -1.Wieso beendet er da programm nicht wenn ich für c=-1 eingebe?danke für jede hilfe
-
Original erstellt von <hugo>:
**hallo,
ich hab da mal ein paar Fragen zu EOF. zu erst mal ein Beispiel:#include<stdio.h> int main(){ int c; while((c=getchar())!=EOF){ putchar(c); } return 0; }
1.)Welchen Sinn erfüllt hier EOF(end of file)?das programm tut das selbe wenn ich eof weg lasse.**
Sicher nicht. Wenn Du es schaffst, ein EOF einzugeben (wie, ist von OS zu OS unterschiedlich), beendet sich das Programm. Ansonsten nicht.
2.)ich hab mir vorher EOF einmal ausgeben lassen und bekam den wert -1.Wieso beendet er da programm nicht wenn ich für c=-1 eingebe?
Wie hast Du diese -1 eingegeben? Indem Du erst auf '-', dann auf '1' gedrückt hast? Merkst Du, worauf ich hinaus will? Das sind 2 getrennte Zeichen.
-
hmm ....
also ich hab da auch mal ne Frage zu dem Thema ,
und zwar :kann es sein, das, wenn ich mit fread() aus einer BinaerDatei(WinDO$) lese und mit feof()
das Dateiende prüfe, das feof() ein EOF Zeichen in der BinaerDatei findet und die Leseaktion vorzeitig(vor Dateiende) abgebrochen wird ? Oder kann sein das die Leseoperation vorzeitig abgebrochen wird wenn Datei von einem anderen Prozess (lese-/schreibzugriff) geöffnet ist?
-
zu 1.)
ich dachte erst EOF wäre die Tastenkombi strg+c jedoch beendet er auch ohne eof das Programm mit dieser Kombination.Wie bekomme ich EOF von meinem system heraus?zu 2.)int kann doch werte von -32000 bis 32000 speichern also solte doch wenn ich -1 eingebe dieser wert auch in c gespeichert sein oder ist das falsch?
-
Original erstellt von <hugo>:
zu 1.)
ich dachte erst EOF wäre die Tastenkombi strg+c jedoch beendet er auch ohne eof das Programm mit dieser Kombination.Wie bekomme ich EOF von meinem system heraus?FAST richtig gedacht. Windows fängt strg+c allerdings ab, bevor der Tastendruck Dein Programm erreicht, und schiesst dann Dein Programm ab.
zu 2.)int kann doch werte von -32000 bis 32000 speichern also solte doch wenn ich -1 eingebe dieser wert auch in c gespeichert sein oder ist das falsch?
getchar liesst aber keine Zahlen, sondern (wie der Name schon sagt) Zeichen ein, und verpackt diese nur in einem int-Wert, damit EOF einen Wert kriegt, der anders _möglichst_ nicht vorkommt.
[ Dieser Beitrag wurde am 05.04.2003 um 10:18 Uhr von SG1 editiert. ]
-
wirklich beeindruckend wie gekonnt ihr meine Fragen ignoriert habt. RESPEKT!!
-
ok danke ich glaube ich habe es gerafft.Übrigens ist mir aufgefallen das in Linux Strg+D EOF ist,und wenn ich es nicht mit in den Code einbaue kann ich es auch nicht über die Tastenkombi beenden.
@sg
sorry das deine Frage ignoriert wurde aber ich bin totaler nub und kann dir nicht helfen.
Ich hoffe aber ein anderer hilft dir ansonsten mach doch einen nuen thrad auf.HELFT BITTE AUCH SG!!!!
danke
-
Original erstellt von <sg>:
**hmm ....
also ich hab da auch mal ne Frage zu dem Thema ,
und zwar :kann es sein, das, wenn ich mit fread() aus einer BinaerDatei(WinDO$) lese und mit feof()
das Dateiende prüfe, das feof() ein EOF Zeichen in der BinaerDatei findet und die Leseaktion vorzeitig(vor Dateiende) abgebrochen wird ? Oder kann sein das die Leseoperation vorzeitig abgebrochen wird wenn Datei von einem anderen Prozess (lese-/schreibzugriff) geöffnet ist?**AFAIK nicht.