C-Programmierung: Eingabekontrolle?
Für etliche Aufgaben, die ich bereits bearbeitet habe, bzw. die noch kommen werden, brauche ich eine Eingabekontrolle.
In einer meiner Aufgaben muss eine Zahl eingelesen werden, welche durch 8 teilbar ist. Soweit so gut. Meine Eingabekontrolle sieht wie folgt aus:
// ...
scanf("%d", &n);
getchar();
while (n % 8 != 0) {
printf("\n%d ist eine ungueltige Eingabe\n", n)
printf("Bitte eine durch 8 teilbare Zahl eingeben: ");
scanf("%d", &n);
}
// ...
Meine Frage nun: Wie kann ich bei der Eingabekontrolle auch kontrollieren, dass keine Klein- bzw. Großbuchstaben und auch keine Sonderzeichen eingelesen werden? Was muss ich da beim while noch als Ausdruck hinzufügen?
while ((n % 8 != 0) || ...??)
Könnt ihr zudem eure Antworten auch erklären? Das wäre sehr hilfreich!
Vielen Dank schon einmal. Ihr seid die Besten!
2 Antworten
a) Du kannst die Eingaben erst mit fgets einlesen und dann die Funktion strtol verwenden, um den eingelesenen Wert zu validieren.
b) Du kannst die Eingabe als String einlesen und auf ihre Bestandteile prüfen. Dazu läufst du via Schleife durch jedes Zeichen und nutzt die isdigit-Funktion. Beim ersten Fehlschlag kannst du die Schleife abbrechen.
schau dir mal den ASCII Zeichensatz an. Irgendwo findest du Zahlen 0 bis 9
Somit kannst du Abfrage machen ob die ASCII Zeichen 0 bis 9 gedruckt wurden
größer 2F kleiner 3A