scusa ma non è che puoi postare quello che ti viene a video? sinceramente non ha capito cosa vuoi dire con "mi carica sempre tutto male"...si perde dei campi o ci sono caratteri spuri nei campi ? Siccome mi sono accorto che mi mancava un ungetc prova con questo:
codice:
int carica(FILE *f,automobile el[])
{
int i,k;
char tmp_c;
for(i=0;!feof(f);i++){
do
{
tmp_c = fgetc(f);
if( feof(f) )
return i;
}
while( (tmp_c == '!') || (tmp_c == '\r') || (tmp_c == '\n') );
ungetc(tmp_c, f);
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!",&(el[i].prezzo));
}
return i;
}