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.


Anmelden zum Antworten