Per le fgets basta che aggiungi un
codice:
while(getchar()!='\n');
dopo ogni scanf che precede un fgets...

Ciò succede perchè scanf non consuma tutti i caratteri in input, ma solo quelli di cui necessita, perciò devi eliminare tutti i caratteri restanti fino al ritorno a capo ('\n') compreso...