Switch: Endlosschleife bei Buchstabeneingabe scanf
-
Hallo Forum,
ich hab ein Problem.
Ich habe eine Switch Anweisung, wo ich eine Zahl zwischen 1 und 3 einlese.
Wenn die Wahl abweicht, springt er wieder an den Anfang.Das klappt auch ganz gut, bis ein Buchstabe eingeben wird.
Dann läuft das Programm endlos in der Schleife.
Den Tastaturpuffer leeren, hilft auch nicht.Wenn niemand eine Lösung hat, steige ich auf Buchstaben, statt Zahlen, um?!
do { printf("\nWonach moechten Sie die Datensaetze sortieren?!\n\n"); printf("******* Ausgabe: Konsole *******\n"); printf("1:\t Nach Umsatz sortieren\n"); printf("2:\t Nach Arbeitsproduktivität sortieren\n"); printf("3:\t Nach Loehne sortieren\n\n"); fflush(stdin); scanf("%d", &sort); switch(sort) { case 1: blablabla status = 1; break; case 2: blablabla status = 1; break; case 3: blablabla status = 1; break; default: printf("Ihre Auswahl war fehlerhaft!\nBitte korrigieren Sie Ihre Auswahl!\n\n"); status = 0; break; }} while (status==0);
-
- fflush(stdin) ist Anfängerunsinn
- benutze Rückgabewerte für scanf (dazu sind sie da)
- für deinen Fall der Einzeicheneingabe würde ich getchar() benutzen, mit anschließendem Eingabepufferleeren, alsoint c; do{ c=getchar(); while(!ferror(stdin)&&!feof(stdin)&&getchar()!='\n'); switch(c) { case '1': ...
-
- für deinen Fall der Einzeicheneingabe würde ich getchar() benutzen, mit anschließendem Eingabepufferleeren, also
Vielen Dank für deinen Code. Funktioniert so einwandfrei.
Da das die einzige Eingabe im ganzen Programm ist, hoffe ich, dass nichts weiter Fehler produziert.