La funzione fread in C permette di leggere su un file un blocco di dati di qualsiasi tipo, precedentemente aperto con la funzione fopen. La funzione fread consente quindi di leggere i dati di un file binario. Ricordiamo che un file binario memorizza dati di qualunque tipo, quindi anche dati che non sono caratteri (tipo vettori o strutture). Inoltre, per la lettura a blocchi è necessario che il file sia stato aperto in modalità binaria (b).
Dove punt rappresenta l'indirizzo della locazione di partenza da cui leggere i dati, dim rappresenta la dimensione in byte del singolo dato e num rappresenta il numero degli elementi da leggere nello stream.FILE *fp è il puntatore al file restituito dalla funzione fopen, così come nelle altre funzioni che abbiamo studiato finora.
Fondamenti solidi di programmazione
Impara le basi della programmazione in C in modo semplice, pratico ed efficace. Variabili, cicli, funzioni, logica e algoritmi.
⏱️9 ore di corso registrato
🧩Più di 50 algoritmi risolti passo passo
🎯Livello base
💻100% online, fruibile quando vuoi
Il valore di ritorno di fread indica il numero di elementi effettivamente letti dal file. In caso di successo il valore di ritorno deve coincidere con quello del parametro num passato alla funzione.
Se punt rappresenta un vettore, allora in esso verrano trasferite le informazioni lette dal file.
Un file può avere dimensioni elevate, quindi occorrono più chiamate ad fread. Pertanto la funzione ad ogni chiamata legge una limitata porzione di file.
Dopo l'apertura del file con fopen, il puntatore si trova all'inizio del file, ogni volta che viene chiamata fread il puntatore si sposta in avanti del numero di byte letti. Quando la funzione termina di leggere tutto il contenuto del file ritorna il valore 0 (indica quindi che il puntatore è posizionato alla fine).
Se si tenta nuovamente di leggere la funzione restituirà il valore 0 per indicare che il puntatore è a fine file.
Esempio di utilizzo di fread in C
Realizziamo un programma in linguaggio C che determini e visualizzi il numero delle occorrenze di uno specifico carattere fornito come argomento in un file di testo.
Apriamo il file con la funzione fopen e controlliamo se il puntatore restituisce il valore NULL. In caso positivo restituiamo un messaggio di errore e usciamo dal programma, altrimenti continuiamo nel nostro programma.
Quindi utilizziamo fread(buffer, sizeof(char), sizeof(buffer), fp);
Buffer dove sono trasferite le informazioni lette dal file, sizeof(buffer) indica il numero di elementi del vettore, sizeof(char) rappresenta la dimensione in byte di un elemento del vettore, fp è il file da leggere.
Inizializziamo a zero il contatore del carattere ricercato e lo incrementeremo ogni volta che verrà trovata l'occorrenza di quel carattere nel file.
Infine chiudiamo il file usando la funzione fclose e stampiamo il risultato ottenuto.
Ecco dunque il listato completo:
📚 Consigliato per te
50 Algoritmi per imparare C++
Struttura dati, puntatori e algoritmi classici in C++, passo passo.
Un'email ogni tanto con i nuovi articoli e le guide — niente spam, ti disiscrivi quando vuoi.
🍪 Questo sito usa i cookie
Utilizziamo cookie tecnici necessari al funzionamento e, previo tuo consenso, cookie
analitici e di terze parti per migliorare l'esperienza di navigazione.
Leggi la Cookie Policy e la
Privacy Policy.