Quoto quanto scritto sopra, inoltre suddividendo in funzioni ti potrebbe risultare più facile trovare l'errore/errori
Prova a mettere la fscanf nel corpo del while , e nella condizione metti solo "!feof(fp)". Inoltre credo che nella fscanf quando si legge una stringa non vada messa la &..