nikpez
Ominide
1 min. di lettura
Vota 5 / 5

Concetti Chiave

  • Il file binario "interi.dat" contiene una sequenza di interi positivi da modificare in base a una somma progressiva.
  • Il programma modifica ogni elemento, eccetto il primo, incrementandolo con la somma di tutti gli elementi precedenti.
  • Il codice include due funzioni principali: una per creare il file e inserire i numeri, e un'altra per modificare i valori seguendo la logica specificata.
  • La modifica del file avviene tramite lettura e scrittura binaria, utilizzando la funzione fseek per navigare tra i dati.
  • È prevista una stampa di controllo per verificare il contenuto del file "interi.dat" dopo la modifica.
File binario - Esercizio

Dato (lo devi creare tu) il file binario di interi positivi "interi.dat", modificarlo nel seguente modo: ogni elemento, ad eccezione del primo, deve essere incrementato di un valore pari alla somma di tutti gli elementi precedenti.

Esempio:
File "interi.dat" prima: 1 4 4 9 6 9 19
File "interi.dat" modificato: 1 5 9 18 24 33 52

#include
#include
int main()
{
FILE *fpInteri;
int num;
int totNumeri;
int i;
fpInteri=fopen("interi.dat","wb");
if(fpInteri == NULL)
{
printf("Errore nella creazione del file di output");
getchar();
exit(1);
}
do
{
printf("Quanti numeri vuoi inserire?\n");
scanf("%d",&totNumeri);
fflush(stdin);
}while(totNumeri for(i=0; i {
printf("Digita un numero\n");
scanf("%d",&num);
fflush(stdin);
fwrite(&num,sizeof(int),1,fpInteri);
}
fclose(fpInteri);
getchar();
return 0;
}
#include
#include
int main()
{
FILE * fpInteri;
int num;
int somma=0;
fpInteri=fopen("interi.dat","r+b");
if(fpInteri == NULL)
{
printf("Errore nell'apertura del file di ingresso\n");
getchar();
exit(1);
}
fread(&num,sizeof(int),1,fpInteri);
while(!feof(fpInteri))
{
somma+=num;
fseek(fpInteri,-1L*sizeof(int),SEEK_CUR);
fwrite(&somma,sizeof(int),1,fpInteri);
fseek(fpInteri,0L,SEEK_CUR);
fread(&num,sizeof(int),1,fpInteri);
}
fclose(fpInteri);
//stampa file per test
fpInteri=fopen("interi.dat","rb");
while(fread(&num,sizeof(int),1,fpInteri))
{
printf("%d\n",num);
}
fclose(fpInteri);
getchar();
return 0;
}

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community