Buchstaben eingabe / Programm stürzt ab



  • Gibt es einen Trick gegen das hier:

    Ein Programm fragt eine eingabe.Man tippt ein Buchstabe ein und plötzlich
    naja macht das programm irgendwas. 😕
    Gibt es da was?



  • Wie bitte? 😕 🙂



  • Kompiliere mal folgendes ein rechner:

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    
    int anfang();
    int rechner();
    
    int main()
    {
    
      printf("V0.1\n\n\n");
      getch();
      anfang();
    return 0;
    }
    
    int anfang()
    {
        int c;
        printf("Was wollen sie machen?\n1 Rechnen\n2 Ende\n");
    
        scanf("%d", &c);
        if(c==1)
        {
        rechner();
    
    }
        else
       { 
        return 0;
    }
    }
    
    int rechner(void)
    {
        int zahl1, zahl2, a, s;
        cheese:
        printf("\n1 Addition(plusrechnen)\n2 Suptration(minusrechnen)\n");
        scanf("%d", &a);
        if(a==1)
        {
                printf("\nErste Zahl= ");
                scanf("%d",&zahl1);
    
                printf("\nZweite Zahl= ");
                scanf("%d",&zahl2);
    
                s=zahl1+zahl2;
        }
        else if(a==2)
        {
              printf("\nErste Zahl= ");
                scanf("%d", &zahl1);
    
                printf("\nZweite Zahl= ");
                scanf("%d", &zahl2);
    
                s=zahl1-zahl2;  
        }
        else
        {
            printf("\n?\n");
            goto cheese;
        }
        printf("Ergebniss= %d\n",s);
    
        anfang();
    return 0;
    }
    

    Ich weiß goto ist auch drin.Aber bitte keine vorschläge dafür.
    Auf jeden fall am anfang wenn man anstatt der zahl ein buchstabe eingibt ist ja noch nicht schlimm(Programm geht einfach aus).Aber Wenn er die zahlen fragt zum rechnen und man gibt ein buchstaben ein sieht es so aus wie eine endloss schleife.Gibt es irgendwas gegen diesen absturz?
    mfg.
    Stefan



  • Du musst nach jedem scanf() das \n aus dem Tastaturpuffer löschen.
    Mach das mit

    while(getchar()!='\n');
    


  • Danke.

    mfg.
    Stefan


Anmelden zum Antworten