Fehlerabfrage!
-
Hinter "Eingegebenes Zeichen ist ....
solltest Du ein \n machen, der Übersichtlichkeit wegen.
-
Sorry, mekr da grad nicht so was das soll...
-
Ist die bestätigung mit Enter schuld?
-
Das ganze sieht jetzt so aus:
#include<stdio.h> int main() { char zeichen; int zahl; zahl = 0; do { zeichen = getchar(); //printf("\n*****************\nEingegeben: %d\n", zeichen); if((zeichen < 48) || (zeichen > 57)) { printf("Eingegebenes Zeichen ist keine Zahl! \n"); } else { zahl = zeichen - 48; printf("Eingegebenes Zeichen ist Zahl! \n"); } } while(zahl != '\n'); return 0; }
Wenn ich nun z.B. auf meinem Ziffernblock eine 5 drücke, bekomm ich als Ausgabe beide Meldungen! Ich verstehs echt nicht was da los ist...
-
Ja, Du kriegst doch nach Deinem eingegebenen Zeichen immer noch die 10 für die Enter-Taste.
-
Kannst ja mal anstelle von 5 eine Zahl mit mehr Ziffern eingeben, zB 5468 ... oder so.
-
Für (zeichen < 48) || (zeichen > 57) gibt es isdigit() aus der <ctype.h> bzw. die Negation davon.
Und das verlangt nicht mal ASCII.
-
Ich hab mit nachfolgenden Code mal versucht, dass ich mir das Return, also die 10, rausfilter. Aber irgendwie ist es mir nicht so gelungen. Die Return-Taste ist immer noch mitdabei!
#include<stdio.h> int main() { char zeichen; int zahl; zahl = 0; do { zeichen = getchar(); //printf("\n*****************\nEingegeben: %d\n", zeichen); if((zeichen < 48) || (zeichen > 57) || (zeichen == 10)) { printf("Eingegebenes Zeichen ist keine Zahl! \n"); } else { zahl = zeichen - 48; printf("Eingegebenes Zeichen ist Zahl! \n"); } } while(zahl != '\n'); return 0; }
-
Bei if((zeichen < 48) || (zeichen > 57) || (zeichen == 10)) liegt 10 doch schon bei < 48
-
#include<stdio.h> int main() { char zeichen; int zahl; zahl = 0; do { zeichen = getchar(); //printf("\n*****************\nEingegeben: %d\n", zeichen); if(zeichen == 10) continue; if((zeichen < 48) || (zeichen > 57)) { printf("Eingegebenes Zeichen ist keine Zahl! \n"); } else { zahl = zeichen - 48; printf("Eingegebenes Zeichen ist Zahl! \n"); } } while(zahl != '\n'); return 0; }
-
getchar liefert auch eigentlich ein int und kein char zurück
-
if ((zeichen < '0') || (zeichen > '9')) sollte es doch tun und hats in
Programmen von mir auch schon getan...