Mi sa che:
Codice:
el[i].modello[0] = fgetc(f);
la devi sostituire con:
Codice:
el[i].modello[0] = '!';
perche' il char '!' l'ha gia' letto ed e' quello che fa interrompere il ciclo precedente.
Comunque ti consiglio records a lunghezza fissa.
In C gia' e' dura stare attenti a tutto, se ti complichi la vita
non ti passa piu'
poi leggi/scrivi interi blocchi con fread(..) e fwrite(...)