Zeile einlesen / Eingabepuffer löschen



  • Mal wieder ein kleines Problem:

    Ich möchte eine komplette Eingabezeile als String einlesen. Ich verwende folgenden Code:

    do {
    ...
    } while (fgets(eingabezeile,LINEMAX,stdin) != NULL);

    Funktioniert soweit bis auf den Fall, dass man nur Enter drückt, dann ist beim nächsten mal STDIN nicht leer. Ein fflush(stdin) wäre zwar das Nötige, funktionert aber bekanntermaßen nicht. Wie kann ich also den STDIN säubern?!

    Vielen Dank im Voraus.

    Grüßle, Mirko



  • Also bei mir funktioniert's auch bei RETURN, ohne dass noch etwas in stdin stehen bleibt:

    /* testprog.c */
    
    # include <stdio.h>
    
    int main()
     {
      char buffer[80];
    
      while (fgets(buffer, 80, stdin) != NULL)
        if (buffer[0] == 'x') /* mit 'x' beenden */
          return(0);
        else
          printf("buffer='%s'\n", buffer);
    
      return(0);
     }
    

    Wenn du dieses Programm startest und nur RETURN eingibst, liefert fgets() die Zeichenkette "\n" und stdin ist wieder "leer".

    Martin


Anmelden zum Antworten