Indirizzo
typedef char PAROLA[300];
Questa è una scelta errata , poichè in questo caso è
molto
difficile modificare i dati (pensate a cambiare il numero civico).
Inoltre c'è una perdita di contenuto informativo (come fare per
controllare se due persone abitano nella stessa città?),
ed è più difficile trovare errori nei dati (per esempio, numero interno =1000).
Una scelta più ragionevole è
typedef struct{ PAROLA VIA;
int NUM_CIVICO ;
int INTERNO ;
int CAP ;
PAROLA CITTA ;
PAROLA STATO ;
} INDIRIZZO;
void ScriviIndirizzo(FILE * fout, INDIRIZZO ind)
{
ScriviParola(fout,"Via ");
ScriviParola(fout,ind.VIA);
fputc(' ',fout);
fprintf(fout,"%d ",ind.NUM_CIVICO);
fprintf(fout,"%d ",ind.INTERNO,fout);
fprintf(fout,"%d ",ind.CAP,fout);
ScriviParola(fout,ind.CITTA);
fputc(' ',fout);
ScriviParola(fout,ind.STATO);
fputc(' ',fout);
}
INDIRIZZO LeggiIndirizzo(FILE * fin)
{
INDIRIZZO ind;
LeggiParola(fin,ind.VIA);
fscanf(fin,"%d ",&ind.NUM_CIVICO);/*fgetc(fin);*/
fscanf(fin,"%d ",&ind.INTERNO,fin);/*fgetc(fin);*/
fscanf(fin,"%d ",&ind.CAP,fin);/*fgetc(fin);*/
LeggiParola(fin,ind.CITTA);
LeggiParola(fin,ind.STATO);
return ind;
}