Ciao!
Non ne sono certo, ma fscanf restituisce SOLO "EOF" e non -1 quando ha finito di leggere... quindi prova a cambiare così:
codice:
 while(fscanf(fp,"%d %s %s %s",&postoauto.i, &postoauto.cognome, &postoauto.nome, &postoauto.targa)!=EOF)