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
Somma elementi diagonale principale di una matrice
Come sommare gli elementi della cornice esterna
Sommare dei numeri di una matrice
Ricerca elementi in una matrice