J oder N - Abfrage
-
Hallo!
Ich entwickel gerade eine Funktion, bei der der Benutzer gefragt wird, ob man weitermachen will. Als Antwort sind j oder n möglich.
Jedoch akzeptiert mein Programm auch Angaben wie "nein" oder "jawoll". Wie kriege ich es hin, dass eine Fehlermeldung ausgegeben wird, wenn man mehr als ein Zeichen eingibt?
#include <stdio.h> #define TRUE 1 #define FALSE 0 int readanswer(const char msg[], const char ans1[], const char ans2[]); int main() { printf("%d", readanswer("Weitermachen? (j/n)", "jJ", "nN")); return 0; } int readanswer(const char msg[], const char ans1[], const char ans2[]) { int input, eingeben; printf("%s", msg); eingeben=TRUE; while (eingeben) { input=getchar(); while(getchar() != '\n') ; if (input != ans1[0] || input != ans1[1] || input != ans2[0] || input != ans2[1]) { printf("Eingabefehler!\nBitte nur j fuer JA oder n fuer NEIN eingeben!"); } if (input == ans1[0] || input == ans1[1] || input == ans2[0] || input == ans2[1]) eingeben=FALSE; } return input; }
-
Du muss halt noch prüfen, ob strlen() == 1 ist.
€dit: Oh Moment .. du liest ja nur ein Zeichen aus... Nimm doch scanf oder gets/fgets, um mehrere Zeichen einzulesen und dann prüfst du, ob text[0] gleich Jj ist und ob die Länge 1 ist. Im Moment prüfst du ja nur das erste zeichen und nicht, ob mehr eingegeben wurde.
-
Also gets(eingabe)
if strlen(eingabe) > 1 ...?if eingabe == J || eingabe == N?
-
nimm bitte fgets(...stdin...) statt gets(). ist sicherer so.
strings werden nur mit strcmp() verglichen.