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 respostasConsidere 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?