nikpez di nikpez
Ominide 738 punti

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 <stdio.h>
#include <stdlib.h>
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 <= 0);

for(i=0; i<totNumeri; i++)
{
printf("Digita un numero\n");
scanf("%d",&num);
fflush(stdin);
fwrite(&num,sizeof(int),1,fpInteri);
}
fclose(fpInteri);
getchar();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
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;
}

Registrati via email