Forum: PC-Programmierung C Programm erzeugt Endlosschleife


von Denis B. (denis_b190)


Lesenswert?

Hallo
Ich programmiere jetzt seid ca 2 Monaten mit C und habe folgendes 
Problem:
Ich will eine Variable zwischen 1 und 6 als int in c einspeichern um 
später damit weiter zu arbeiten. Wenn etwas anderes außer einer Zahl 
zwischen 1 und 6 eingegeben wird soll eine Fehlermeldung erscheinen. 
Wenn ich zahlen außerhalb des Rahmens eingebe funktioniert auch alles 
super, nur wenn ein Buchstabe eingegeben wird, erscheint die 
Fehlermeldung unendlich mal.
Ich hoffe jemand kann einem c Anfänger helfen.
Hier ein Ausschnitt des Codes:


  Int a

  do{
        fflush(stdin);
        scanf("%i", &a);
        if(!(a<7 && a>0)){
            printf("Ungültiger Wert!\n");
        }

    } while(!(a>0 && a<7));

von ich (Gast)


Lesenswert?

Allgemeiner Hinweis. Ein Buchstabe ist keine Zahl. Das Einlesen sollte 
viel allgemeiner formuliert werden z.B. als Zeichen mit anschließender 
Überprüfung.

von Mr.Åarhus (Gast)


Lesenswert?

Schreib mal a>'0' && a<'7'

von Dirk B. (dirkb2)


Lesenswert?

scanf ist so schlau, bei %i nur Ziffern zuzulassen.
Es können, wenn die Eingabe mit 0x beginnt, auch Hexziffern sein.

> Schreib mal a>'0' && a<'7'

Dann müsste er bei %i aber 48 eingeben

: Bearbeitet durch User
von m. (Gast)


Lesenswert?

Überprüfe einmal den Rückgabewert von scanf, der wird bei der Eingabe 
von einem Buchstaben 0 sein. Damit ist der Wert von a nicht gültig.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.