ultimamente sto studiando il C solo che mi sono venuti dei dubbi sulla funzione scanf

ho provato a scriver qualche riga di codice :
codice:
#include<stdio.h>

void main()
	{
	char A;
	printf("Inserire A: ");
	scanf("%c", &A);
	printf("\nA: %c \n", A);
	}
qui ho notato che inserendo più di un carattere quello preso in considerazione è solo il primo, quindi inserendo QWE l'output ottenuto è
A: Q

ho provato poi a modificare il codice cosi:
codice:
#include<stdio.h>

void main()
	{
	char A;
	printf("Inserire A: ");
	do
		{
		scanf("%c", &A);
		printf("\nA: %c \n", A);
		}while(A!='\n');
	}
in questo caso inserendo QWE l'output ottenuto è stato
A: Q

A: W

A: E

A:


ora io ho pensato che il comportamento è dovuto ad un buffer che si riempe e che va quindi ad "inviare automaticamente" l'input ai vari scanf dei successivi cicli, è corretto?
se si c'è un modo per svuotare questo buffer?

ciao