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?