C++ Benutzereingabe prüfen
-
Hallo,
kann mir bitte jemand bei folgendem Problem helfen?
Ich möchte dem Benutzer nur erlauben, Zahlen einzugeben bzw. abprüfen, ob er nur Zahlen eingegeben hat. Dabei lese ich die Zahl in eine Integer-Variable ein - gibt der Benutzer allerdings Zeichen oder Buchstaben ein, wandelt mir das Programm die Eingabe in irgendwelche komischen Zahlen um und mein Programm stürzt ab.Gruß und Danke im voraus
Joe_S
-
Wie liest du den die Benutzereingaben ein?
- cin?
- scanf?Versuche doch das Pferd von hinten aufzuziehen und zuerst ein char Array einzulesen. Dieses könntest du dann durchlaufen und die einzelnen werte prüfen ob sie zwischen 0 und 9 liegen ...
nur so eine idee. es gibt sicher elegantere lösungen
-
Einlesen tu ich mit scanf. Das mit dem char-Array hab ich mir auch schon überlegt, aber dann muss ich ja eine Größe vorgeben - damit beschränke ich den Benutzer bei der Eingabe.
Gruß
Joe_S
-
Du legst den User auch bei einem Integer Wert auf eine bestimmte Länge fest!
-
Hallo Leute,
eine Information fehlt mir noch: dürfen das auch KommaZahlen sein oder nur Integer?
Also zur Strategie: Über die Tastatur werden sowieso >nur< Zeichen eingelesen!
Das kann man zur Prüfung nutzen. Die Eingabe liest in einer Schleife Zeichen ein. Jedes Zeichen wird geprüft, ob es im ASCII den Zeichen '0' bis '9' und Punkt/Komma entspricht. Wenn ja, dann wird ein char-Array durch Anhängen aufgebaut. Am Ende der Eingabe wird mit atoi (ascii to integer) umgewandelt. Das ist die sichere Methode.Einfacher: sofort in char-Array schreiben und die atoi-Funktion ausnutzen. Die meckert, wenn die Umwandlung nicht korrekt war, aber der Rechner stürtzt nicht ab.
So, und nun viel Spass.
-
Joe_S: Musst du scanf benutzen oder machst du das nur weil du noch nichts von streams gehört hast?
-
@Walli:
Nein, ich muss nicht scanf verwenden - ich habe noch nichts von streams gehört
Kennst du eine andere Möglichkeit