Ben ritrovati iTechnoFans, in questa guida tratteremo un nuovo tipo di file.
Si tratta dei file binari (con estensione .dat), i quali hanno diverse particolarità rispetto ai file precedentemente trattati (.txt).
Innanzi tutto, i file binari, sono file che a differenza dei .txt, garantiscono l’accesso diretto ai dati, e non sequenziale, e questo è realizzabile attraverso un’apposita funzione.
Per i file binari inoltre, cambiano anche le modalità di apertura:
Lettura: rb (read binary);
Scrittura: wb (write binary);
Lettura/Scrittura: rb+;
Append: ab;
L’apertura di un file in lettura/scrittura per un file di tipo binario, diventerà quindi:
nomelogico=fopen(“NomeFisico.dat”,”rb+”);
Per questo tipo di file, le funzioni che permettono di leggere e scrivere, sono analoghe a quelle affrontate precedentemente, ma di solito è preferibile utilizzare quelle che stiamo per trattare.
Funzione di lettura:
fread(&x,NumeroDiByte,1,nomelogico);
fwrite(&x,NumeroDiByte,1,nomelogico);
Queste funzioni sono in grado di leggere un blocco di byte (può essere una variabile, un vettore ecc.) dal nostro file.
Parametri:
- x: è la variabile o la struttura dati nella quale andranno a finire i dati letti. La & questa volta sarà però presente sia nella funzione di lettura, che in quella di scrittura.
- NumeroDiByte: in questo campo dovremo inserire il numero di byte che andremo a leggere/scrivere. Per fare questo, possiamo calcolarli manualmente (ad. es. se si tratta di un intero, siamo costretti a digitare 4, in quanto occuperà 4 byte), oppure potremo implementare la funzione sizeof(); che consente di calcolare automaticamente il numero di byte occupati da una variabile o struttura dati, che verrà trattata nelle future lezioni;
- 1: è un numero che nel nostro caso non servirà modificare mai, e rappresenta il numero di elementi fa leggere.
- nome logico: nome logico del file.
NB: queste funzioni, come già accennato, sono in grado di leggere/scrivere anche vettori, e altre strutture dati. Per calcolare il numero di byte da leggere in un vettore di 10 celle quindi, se ad es. si tratta di interi, dovremo moltiplicare i byte occupati da un intero*il num. delle celle. Quindi il numero di byte da leggere saranno 4*10=40!
Esempio di scrittura su file di un semplice intero:
Esempio di lettura da file di un semplice intero:
Vi aspettiamo nella prossima lezione, dove affronteremo una guida su come scrivere/leggere su/da file un intero vettore, implementando la funzione sizeof.