Proponiamo oggi alcuni esercizi sui file con vettori in C. Utilizzeremo i file binari e le funzioni fclose, fopen, fread e fwrite.
Esempio sui file con vettori in C
Realizzare un semplice esempio che crea una procedura per l’inserimento dei dati in un vettore e poi la copia di questi dati su file. Creare anche una procedura per la stampa dei dati inseriti.
Innanzitutto chiediamo all’utente quanti numeri vuole inserire (n) e dunque invochiamo la procedura per inserire i dati nel vettore. Facciamo il controllo che n sia positivo e minore di 10 (abbiamo stabilito di voler inserire massimo 10 numeri e abbiamo memorizzato questo valore nella costante N).
Quindi apriamo il file binario vettori.dat in scrittura, con la funzione fopen, e se l’operazione ha successo memorizziamo i dati nel file con la funzione fwrite. Dopo aver fatto ciò chiudiamo il file.
Poi riapriamo lo stesso file binario in lettura, sempre con la funzione fopen, e utilizziamo la funzione fread per leggere i dati dal file. Invochiamo poi la funzione print per stampare i dati del vettore e infine chiudiamo il file.
lLa funzione fread permette quindi di leggere un array da file con una singola istruzione: fread(a,sizeof(int),n,pf). Infatti se notate passiamo n come terzo argomento, cioè diciamo alla funzione di leggere n dati.
Ecco dunque il listato completo sui file con vettori in C:
#include <stdio.h>
#define N 10
void insert(int *V,int n);
void print(int *V,int n);
void main(void){
FILE *pf;
int a[N],i,n;
do{
printf("Quanti numeri?\n");
scanf("%d",&n);
} while(n<=0 || n>N);
insert(a,n);
pf=fopen("vettori.dat","wb");
if(pf){
fwrite(a,sizeof(int),n,pf);
fclose(pf);
}
else
printf("Errore in scrittura\n");
pf=fopen("vettori.dat","rb");
if(pf){
fread(a,sizeof(int),n,pf);
print(a,n);
fclose(pf);
}
else
printf("Errore in lettura");
}
void insert(int *V,int n){
int i;
for(i=0;i<n;i++){
printf("Numero %d: ", i+1);
scanf("%d",&V[i]);}
}
void print(int *V,int n){
int i;
for(i=0;i<n;i++)
printf("Numero %d: %d\n",i+1,V[i]);
}
Ecco dunque un esempio sui file con vettori in C, continuate a seguire il tutorial, proporrò ancora tanti altri esempi con spiegazione dettagliata.
Alcuni link utili
Allocazione dinamica della memoria con malloc
Realizzare un menù di scelta in C
Come sommare gli elementi della cornice esterna