char mit scanf einlesen



  • Guten Tag,

    Ich, Anonym bin dabei für den Start einen Taschenrechner zu programmieren, jedoch stürzt das Programm nach dem Einlesen des Operators ab.
    Ich hab mich ein wenig informiert und anscheinend liegt das am Eingabepuffer.
    Jetzt habs ich mit fflush(stdin) versucht (ich weiß man solls nicht verwenden) und erziele auch nicht wirklich ein besseres Ergebnis.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
        {
        double ergebnis;
        double zahl1;
        double zahl2;
        char   c_operator;
    
        printf("Calculator\n\n");
        printf("1.  Zahl: ");
        scanf("%d", &zahl1);
        printf("2.  Zahl: ");
        scanf("%d", &zahl2);
        // fflush(stdin);
        printf("Operator: ");
        scanf("%c", &c_operator);
    
        switch(c_operator)
            {
            case '+':
                 ergebnis = zahl1 + zahl2;
                 break;
            case '-':
                 ergebnis = zahl1 - zahl2;
                 break;
            case 'x':
                 ergebnis = zahl1 * zahl2;
                 break;
            case '/':
                 ergebnis = zahl1 / zahl2;
                 break;
            default:
                 printf("Ungueltiger Operator. Bitte verwenden Sie +, -, x oder /\n");
            }
    
        printf("\n%d %c %d = %.2d\n", zahl1, c_operator, zahl2, ergebnis);
    
        system("PAUSE");
        return 0;
        }
    

    Ich bitte um Rat.



  • Ich_anonym schrieb:

    Jetzt habs ich mit fflush(stdin) versucht (ich weiß man solls nicht verwenden) und erziele auch nicht wirklich ein besseres Ergebnis.

    richtig, stdin lässt sich nicht flushen. und bei scanf für 'double' verwende %lf, nicht %d.
    🙂


Anmelden zum Antworten