gets/fgetc/fgets jederzeit durch tastendruck abbrechen
-
Hallo
Ich versuche schon die ganze Zeit, das Schreiben in eine Datei mittels Tastendruck abzubrechen.
Bsp.:
GETS-Versionfseek(stream, 0L, SEEK_END); while((write = gets(length)) != 27) { fprintf(stream, "%s\n", length); }
FPUTC-Version
while((write=fgetc(stream))!=27) { fputc(write, stream); }
Beim ersten bricht er nicht ab ...
Beim zweiten, wird meine File innerhalb kürzester Zeit gespammt, sodass ich schnell 1gb File habe.(also die schleife geht schonmal)
wenn ich auf != '\n' oder EOF prüfe klappts auch nicht ...
Woran liegts ?
danke
grüsse
-
Du solltest bei der 2. Version auch von 'stdin' lesen...
aber selbst dann wird deine Schleife blockiert sein (bis du 'Enter' gedrückt hast').Schau mal nach, ob dein Compiler die Funktion 'kbhit' oder _kbhit' kennt: <conio.h>.
-
Danke für die Antwort.
Also ich habe jetzt diesen Beispielscode:while((write = fgetc(stdin)) != 'a' ) { fputc(write, stream); i2++; }
Warum klappt das mit 'nem kleinen a, aber weder mit 27 noch mit EOF ?
Bin noch ziemlicher Anfänger, deswegen kapier ich's nicht ..
grüsse
-
Weil in den Konsolenpuffer nur druckbare Zeichen eingetragen werden.
Und noch mal der Hinweis auf kbhit...