nikpez di nikpez
Ominide 738 punti

Esercizio - File binari fseek()

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);
}
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;
}

Registrati via email