Differenz zwischen scanf ("% c" & c) und scanf ("% c" & c) [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Warum macht ein Leerzeichen in meiner scanf-Anweisung einen Unterschied? [Duplikat 3 answers

Betrachten Sie das folgende C-Code-Snippet:

#include <stdio.h>

int main()
{
    int a;
    char c;
    scanf("%d",&a);
    scanf("%c",&c);
    printf("int=%d\n",a);
    printf("char=%c\n",c);
}

Ich kann nur die Ganzzahl und nicht das Zeichen eingeben. Die Ausgabe ist einfach der Ganzzahlwert, und für die zweite printf-Anweisung wird kein Wert ausgegeben.

Wenn ich jedoch ein Leerzeichen vor dem Formatbezeichner verwende:

scanf(" %c",&c);

Es funktioniert wie erwartet. Warum ist das so?

Jemand hat mir gesagt, dass es etwas mit dem Löschen des Eingabepuffers zu tun hat. Könnte jemand etwas Licht auf dasselbe werfen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage