bei default schließt sich das Fenster



  • Heyo,

    das hier ist mein Code:

    /* Switch Rechner */

    #include <stdio.h>

    int main (void){
    printf("Rechner:\n");
    printf("Zahlen wie folgt eingeben:\n");
    printf(" <Zahl> <Operator> <Zahl>, z.B. 10 + 2\n");
    int a,b,c;
    char opera;
    scanf("%d%c%d",&a,&opera,&b);
    getchar();
    switch (opera){
    case '+': printf("%d + %d = %d",a,b,a+b);
    break;
    case '-': printf("%d – %d = %d \n", a, b, a-b);
    break;
    case '': printf("%d * %d = %d \n", a, b, ab);
    break;
    case '/': printf("%d / %d = %d \n", a, b, a/b);
    break;
    default: printf("Eingabe falsch\n"); }
    getchar();
    return 0;
    }

    Die Rechnungen funktionieren...
    Wenn ich aber extra etwas falsch eingebe, schließt sich mein Fenster einfach...
    dabei wollte ich über default: die Ausgabe "Eingabe falsch" ausgeben...

    Woran kann das liegen?

    Greez

    Haimi



  • der fehler tritt bei mir nur dann auf, wenn mehr zeichen eingebenen werden, als durch scanf bestimmt.
    dh., die restlichen zeichen bleiben im puffer und sobald das programm zum letzten getchar() kommt, liest es eines dieser zeichen aus dem puffer und kommt sogleich zum return.

    die lösung:

    nach scanf den kompletten puffer leeren.
    statt getchar() machst du:

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

    damit werden alle zeichen bis einschließlich enter-zeichen aus dem puffer gelöscht.



  • Die genannte und andere Lösungen findest du hier über die Suchfunktion, indem du nach "Eingabepuffer leeren" suchst. Btw, bitte benutze in Zukunft cpp-Tags zus besseren Lesbarkeit.


Anmelden zum Antworten