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).

impariamo a programmare

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:

Scrittura

 

 

Esempio di lettura da file di un semplice intero:

Lettura

Vi aspettiamo nella prossima lezione, dove affronteremo una guida su come scrivere/leggere su/da file un intero vettore, implementando la funzione sizeof.