Classico problema col buffer dello stream. Puoi fare così
setlinebuf(stdin);
oppure
void clearKeyboardBuffer(void);
....
void clearKeyboardBuffer(void)
{
char ch;
while((ch=getchar())!= EOF);
}
Il primo codice sostanzialmente dice al sistema di ripulire il buffer per stdin non appena viene premuto invio dopo l'immissione dei dati. Il comportamento varia molto in base al sistema operativo in uso.
il secondo codice contiene una funzione per ripulire il buffer ed è stata rubacchiata a MAW. Il fatto che abbia incluso anche il prototipo di funzione non è un caso o un capriccio di estetica, ma serve al compilatore a rilevare più facilmente gli errori e dunque a prevenire l'introduzione di bug nel nostro programma.