Devi pulire il buffer,ora se sei su windows anche se dicono che fa schifo perchè non è portabile,puoi usare questa funzione da mettere dentro al ciclo:
codice:
fflush(stdin);
E ti pulisce il buffer.
Se non sei su windows puoi usare questo:
codice:
while(getchar()!=10)
    ;
Il punto e virgola sta a significare un' istruzione vuota,cioè che il flusso di istruzioni si ferma finchè non si incontra il carattere newline nel buffer,ma è più difficile da gestire di fflush.