Programme mit EOF funktionieren nicht.
-
getChar() liest deine Konsoleneingabe aus. Wenn du also EOF durch 'a' ersetzt, wird das Programm abgebrochen, wenn du ein a eingibst.
-
Vielen Dank,
das werde ich zu Hause sofort ausprobieren.
Grüße,
Tutorialfresser
-
eof ist ctrl-z
-
eof ist ctrl+d
mit ctrl+z stoppst du einen Prozess (zumindest unter Unix)
-
ctrl+A..Z -> ascii 1..26 dezimal
http://www.cppreference.com/ascii.html
ich kenne auch noch ctrl+c...
-
Hallo,
so ich habe das jetzt ausprobiert, ctrl+z macht nichts anderes als das
Programm zu beenden. Wenn ich EOF durch 'a' ersetze dann funktioniert das
Programm, aber es muss doch auch irgendwie mit EOF funktionieren, sonst
würde es doch nicht in diesem Buch stehen?Grüße,
Tutorialfresser
-
Es funktioniert mit EOF wenn Du
programm < datei.txt
ausführst. Auf der DOS-Konsole kannst Du nunmal kein EOF eingeben, auf UNIX-Terminals ist das wirklich Ctrl-D, da klappt das auch bei Direkteingabe.
-
Vielen Dank, dafür benötigt man also UNIX.
Ich bitte Dich aber mir programm < datei.txt etwas genauer zu
erklären falls es keine Umstände macht.Vielen Dank im voraus!
Tutorialfresser
-
Mit dem Shell-Operator (bzw. bei Windows heisst es wohl Batch) "<" kannst Du eine Datei auf die Standard-Eingabe umleiten. Das Programm verhält sich dann so, als würdest Du den Inhalt von datei.txt eintippen, und empfängt am Ende der Datei eben dieses EOF.
Analog kannst Du die Standardausgabe mit > datei.txt anstatt auf den Bildschirm in eine Datei schreiben lassen. Zu guter Letzt mit 2> datei.txt die Standardfehlerausgabe (stderr).
-
TutorialFresser schrieb:
Ich bitte Dich aber mir programm < datei.txt etwas genauer zu erklären falls es keine Umstände macht.
Damit kannst du in der DOS-Konsole die Eingaben für dein Programm umleiten (anstelle der Tastatur wird stdin seine Daten aus der Datei 'datei.txt' holen).
(Anmerkung: der Befehl kommt nicht in dein Programm - mit diesem Befehl startest du dein Programm aus der Konsole heraus)
-
supertux schrieb:
mit ctrl+z stoppst du einen Prozess (zumindest unter Unix)
ich dachte immer das ist ctrl+c.
btw: ctrl+z kommt aus cp/m zeiten, da wurden alle files mit ctrl+z aufgefüllt damit die länge immer ein vielfaches von 128 ist. wenn man so'n file ausliesst und kommt auf ein ctrl+z bedeutet das: EOF
-
Super, vielen Dank für Eure Antworten.
Grüße,
Tutorialfresser
-
Mich würde in diesem Zusammenhang noch Folgendes interessieren:
Mit
#include <stdio.h> main() { printf("%d \n", EOF); }
kann ich mir ja einfach den Wert von EOF ausgeben lassen. Unter Visual Studio (Windows-Konsole) erscheint bei mir der Wert -1.
In der <stdio.h> steht#define EOF (-1)
Trotzdem beendet man das Programm aber nicht, wenn ich -1 eingebe, sondern z.B. F6 oder Ctrl+Z. Irgendwie verwirrt mich das, was bedeutet dieses (-1) bei EOF ? Ist das ein numerischer Wert, oder ein String, oder ... ???
Vielen Dank für jeden Rat und Tipp,
Meyoto
-
EOF ist kein Wert, den man 'so einfach' eingeben kann. Der wird intern von den Eingabefunktionen verwendet, um zu sagen "sorry, ich hab' nichts, was ich dir geben kann".
(und der Wert -1 ist auch der Grund, warum getc() keinen char zurückgibt, sondern einen int - von EOF ist garantiert, daß es außerhalb der Wertebereiches von char liegt, um es von jeder legal möglichen Eingabe unterscheiden zu können)
-
Alles klar, danke schön !!