c - länge - title tag definition




Zeichen Eingabefehler in meinem C-Programm? (2)

Ich bin neu in C Programmierung, ich habe ein einfaches Taschenrechnerprogramm in C gemacht.
Das Programm läuft, aber es funktioniert nicht, es funktioniert, bis der Wert für b eingegeben wird, danach, wenn die Zeicheneingabe kommt, fragt es nicht nach der Eingabe. Ich weiß nicht, warum das passiert, aber gibt es irgendeine Lösung?

Hier ist mein Code:

#include <stdio.h>
int main()
{
    float a,b;
    char op;
    printf("enter a: ");
    scanf("%f",&a);
    printf("enter b: ");
    scanf("%f",&b);
    printf("enter operation: ");
    scanf("%c",&op);
    switch(op)
    {
        case '+':
            printf("\n%.2f %c %.2f = %.2f",a,op,b,a+b);
            break;
        case '-':
            printf("\n%.2f %c %.2f = %.2f",a,op,b,a-b);
            break;
        case '*':
            printf("\n%.2f %c %.2f = %.2f",a,op,b,a*b);
            break;
        case '/':
            printf("\n%.2f %c %.2f = %.2f",a,op,b,a/b);
            break;
        default:
            printf("invallid input!!");
    }
    return 0;
}

Das Programm scheint absolut korrekt zu sein, aber da ist noch etwas, das mir fehlt. Antworten werden geschätzt.


Wenn Sie scanf() , wird ein \n Zeichen im Eingabepuffer zurückgelassen. Der nächste scanf() behält diesen Zeilenumbruch und speichert ihn. Sie müssen entweder ein Leerzeichen zu scanf() hinzufügen:

scanf(" %c", &op); /* to skip any number of white space characters */

Oder konsumiere das Zeichen stattdessen mit getchar() . Die Funktion getchar() gibt int und EOF bei Fehler zurück. Es kann folgendermaßen verwendet werden:

int op = getchar()

Was den in op . Sie können auch getchar() nach Ihren scanf() -Aufrufen hinzufügen, wodurch das übrig gebliebene \n Zeichen verbraucht wird.

Hinweis: Es scanf() , das Ergebnis von scanf() zu überprüfen. Sie sollten stattdessen schreiben:

if (scanf(" %c", &op) != 1) {
    /* oops, non character found. Handle error */

scanf() einfach ein Leerzeichen vor den scanf() - scanf() der scanf() -Funktion Ihrer scanf() und Ihr Programm wird gut funktionieren:

scanf( " %c" , &op );




char