Concetti Chiave

  • Il programma apre due file binari: uno per leggere numeri naturali e l'altro per aggiornare i record.
  • Utilizza una struttura dati chiamata 'prova' che contiene due campi interi, campo1 e campo2.
  • Per ogni numero letto dal primo file, il programma cerca il record corrispondente nel secondo file.
  • Se il campo1 del record è dispari, incrementa il campo2 di un'unità.
  • Il programma gestisce errori nell'apertura dei file e chiude correttamente entrambi i file al termine delle operazioni.

Scrivi un pgm C che legge un file binario di numeri naturali e, per ogni numero n letto, aggiorna il record di posizione (relativa) n-esima di un secondo file binario. Il tracciato record del secondo file è:

typedef struct{

int campo1;

int campo2;

}prova;

L’aggiornamento consiste nell’incrementare di una unità il

campo2 se il campo1 è dispari.

typedef struct{

int campo1;

int campo2;

}prova;

int main()

{

FILE *fpInteri;

FILE *fpRec;

prova rec;

int num;

fpInteri=fopen("interi.dat","rb");

if(fpInteri == NULL)

{

printf("Errore nella apertura del file di lettura");

getchar();

exit(1);

}

fpRec=fopen("record.dat","r+b");

if(fpRec == NULL)

{

printf("Errore nella apertura del file di update");

getchar();

exit(1);

}

Aggiornamento dei record

while(fread(&num,sizeof(int),1,fpInteri))

{

fseek(fpRec,num*sizeof(rec),SEEK_SET);

fread(&rec,sizeof(rec),1,fpRec);

if(rec.campo1%2==1)

{

rec.campo2++;

fseek(fpRec,-1L*sizeof(rec),SEEK_CUR);

fwrite(&rec,sizeof(rec),1,fpRec);

}

}

fclose(fpInteri);

fclose(fpRec);

getchar();

return 0;

}

Domande da interrogazione

  1. Qual è lo scopo principale del programma C descritto nel testo?
  2. Il programma C legge un file binario di numeri naturali e aggiorna un secondo file binario incrementando il campo2 di un record se il campo1 è dispari.

  3. Come viene gestito l'aggiornamento dei record nel secondo file binario?
  4. Per ogni numero letto dal primo file, il programma cerca la posizione corrispondente nel secondo file, legge il record, verifica se campo1 è dispari e, in tal caso, incrementa campo2 di una unità.

  5. Quali sono le operazioni di file handling utilizzate nel programma?
  6. Il programma utilizza fopen per aprire i file, fread per leggere i dati, fseek per posizionarsi nel file, fwrite per scrivere i dati aggiornati e fclose per chiudere i file.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community