Eingabe vorzeitig beenden
-
Hallo
Ich programmiere mit C:
Ich hab eine Frage, ich soll eine Aufgabe bewältigen wo man ein Fach mit Note einliest (Mathe 1) und diese dann weiter bearbeitet!
Mein Problem ist schon früher, man soll beliebig viele Fächer mit Noten eingeben und mit Strg-D die eingabe verlassen, dann wird der rest bearbeitet!Wie kann ich das realisieren das man mit drücken Strg+d die Eingabe verlässt?
Vielen dank schonmal
Gruß
kriechkarl
-
Das hängt davon ab, auf welchem Betriebssystem das Programm laufen soll.
Wie liest du die Werte denn ein?
-
Strg-D schließt den Standardeingabestrom (setzt das eof-Bit auf stdin). Das bedeutet, dass danach alle Versuche, etwas von stdin einzulesen, scheitern, und darauf kannst du reagieren. Ein einfaches Beispiel, wie man damit umgehen kann, ist
char zeile[1024]; while(fgets(zeile, sizeof(zeile), stdin) != NULL) { /* Hier zeile verarbeiten */ }
...weil fgets NULL zurückgibt, wenn der Eingabestrom, aus dem gelesen werden soll, geschlossen (oder sonstwie nicht lesbar) ist. In diesem Beispiel kriegt man zwar Probleme, wenn eine Zeile länger ist als 1023 Zeichen, aber ich nehme an, dass das für deine Zwecke unproblematisch ist.