Leggere da un file in C

Vediamo alcuni esempi di come leggere da un file in C.

Dato un file di nome ‘numeri.txt‘ che contiene numeri interi, creare due file di nome ‘maggiori.txt‘ e ‘minori.txt‘. Rispettivamente questi file conterranno quindi i valori maggiori e quelli minori di un numero inserito in input dall’utente.


Risoluzione esercizio: leggere da un file in C e creare altri due file

Innanzitutto creiamo tre variabili puntatore che assoceremo in questo modo: fp al file di nome ‘numeri.txt’, fmax al file di nome ‘maggiori.txt’ e fmin al file ‘minori.txt’.

Controlliamo poi che i puntatori non restituiscano il valore NULL e proseguiamo chiedendo all’utente quale valore dividerà la sequenza di numeri nei due file minori.txt e maggiori.txt.

Dopo scorriamo il file numeri.txt fino alla fine, utilizzando la funzione feof e leggiamo tutti i valori del file utilizzando la funzione fscanf.

Poi confrontiamo ogni numero letto dal file con il valore immesso dall’utente. Se tale valore è minore si memorizza nel file minori.txt, altrimenti se è maggiore o uguale si memorizza nel file maggiori.txt.

Per scrivere nei file utilizziamo la funzione fprint, che abbiamo studiato in questo tutorial: fprintf.

Infine chiudiamo i file utilizzando la funzione fclose.

Ecco dunque il listato completo:

#include <stdio.h>
#include <stdlib.h>

int main(){
	FILE *fp, *fmax, *fmin;
	int  val, numero;
	
	if((fp=fopen("numeri.txt", "rt"))==NULL) {
		printf("Errore nell'apertura del file'");
		exit(1);
	}
	
	if((fmax=fopen("maggiori.txt", "wt"))==NULL) {
		printf("Errore nell'apertura del file'");
		exit(1);
	}
	
	if((fmin=fopen("minori.txt", "wt"))==NULL) {
		printf("Errore nell'apertura del file'");
		exit(1);
	}
	
	printf("Valore:");
	scanf("%d", &val);
	
	while(!feof(fp)){
		fscanf(fp,"%d\n", &numero); //legge i numeri dal file
  		if (numero<val)
			fprintf(fmin,"%d\n", numero); //se minori li inserisce in un file di nome minori.txt
  		else
	 		fprintf(fmax,"%d\n", numero); //se maggiori o uguali li inserisce in un file di nome maggiori.txt
 }
	fclose(fp);
	fclose(fmin);
	fclose(fmax);
	
return 0;
}

Chiaramente questo è solo un esempio di come leggere da un file in C.

Alcuni link utili

Indice argomenti linguaggio C

Media per riga e per colonna

Somma elementi diagonale principale di una matrice

Come sommare gli elementi della cornice esterna

Come sommare due matrici

Sommare dei numeri di una matrice

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Inserire dati in una matrice

Tavola pitagorica in C

Array multidimensionali

Programma sui triangoli in C

Media dei numeri in un array

Array con numeri random

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *