libri-javascript-python

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

Indice argomenti linguaggio C

La funzione fopen

Funzione fscanf

Allocazione dinamica della memoria con malloc

Strutture in C

Realizzare un menù di scelta in C

Strutture complesse in C

Come sommare gli elementi della cornice esterna

Come sommare due matrici

Matrice trasposta in C

Prodotto tra matrici