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.


Anmelden zum Antworten