Non so se ho capito ma se fai
codice:
for(k=0;(el[i].marca[k]=fgetc(f))!='!';k++)
non ti perdi la marca? Se ogni riga comincia con ! il ciclo for termina subito ed in effetti non legge la marca. Prova questo codice e vedi se è questo il problema:
codice:
int carica(FILE *f,automobile el[])
{
int i,k;
for(i=0;!feof(f);i++){
while( (fgetc(f) != '!') && !feof(f) )
; // Scoda tutti i caratteri fino al primo !
for(k=0;(el[i].marca[k]=fgetc(f))!='!';k++);
el[i].marca[k]='\0';
for(k=0;((el[i].modello[k]=fgetc(f))!='!')&&!feof(f);k++);
el[i].modello[k]='\0';
fscanf(f,"%f \n ",&(el[i].prezzo));
}
return i;
}
Buon lavoro