Probabilmente è perché mischi fgets e scanf.
scanf non pulisce il buffer, quindi prima di utilizzare una fgets devi pulirlo manualmente.
Aggiungi questo prima di ogni fgets che succede uno scanfAttento a non metterla fra 2 fgets però.codice:while(getchar()!='\n');