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));
Allgemeiner Hinweis. Ein Buchstabe ist keine Zahl. Das Einlesen sollte viel allgemeiner formuliert werden z.B. als Zeichen mit anschließender Überprüfung.
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
Ü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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.