Diferença entre scanf ("% c", & c) e scanf ("% c", & c) [duplicado]

Esta pergunta já tem uma resposta aqui:

Por que um espaço na minha declaração scanf faz diferença? [duplicado 3 respostas

Considere o seguinte trecho de código C:

#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);
}

Sou capaz de inserir apenas o número inteiro e não o caractere. A saída é simplesmente o valor inteiro e nenhum valor é gerado para a segunda instrução print

No entanto, se eu usar um espaço antes do especificador de formato:

scanf(" %c",&c);

Funciona como esperado. Por que esse é o caso?

Alguém me disse que tem algo a ver com a limpeza do buffer de entrada. Alguém poderia lançar alguma luz sobre o mesmo?