18.08.2013 Views

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capitolo 12<br />

I file<br />

In questo capitolo saranno trattati gli approcci e le relative funzioni <strong>per</strong> l’accesso ai file.<br />

Quando si parla di accesso a file si intende la lettura e/o scrittura di dati da e verso file.<br />

12.1 File binari e file di testo<br />

Nella trattazione che segue riguardo all’accesso a file da parte di programmi scritti in C, è<br />

importante distinguere tra due tipologie di file: i file binari ed i file di testo. La distinzione è<br />

necessaria in quanto si utilizzano in genere funzioni diverse <strong>per</strong> la corretta interazione con i file<br />

a seconda del tipo di file.<br />

I file binari, al contrario dei file di testo, non sono leggibili correttamente con i classici editor<br />

di testo come emacs e vi, oppure con comandi come cat, more, less, ecc. Questo <strong>per</strong>chè i file<br />

binari non contengono solo i caratteri ASCII stampabili, come caratteri alfanumerici e segni di<br />

interpunzione, ma possono contenere tutti i caratteri ASCII.<br />

E’ possibile accedere ad un file di testo anche usando le funzioni <strong>per</strong> l’accesso a file binari,<br />

in quanto un file di testo non è altro che un “caso particolare” di file binario che utilizza un<br />

sottoinsieme (i caratteri stampabili) dei caratteri ASCII. Quindi è possibile leggerli a blocchi di<br />

byte come <strong>per</strong> i file binari. L’opposto non è sempre agevole, in particolare <strong>per</strong> la lettura. Infatti,<br />

le funzioni di accesso a file di testo si aspettano che il file di ingresso sia strutturato in righe<br />

separate dall’andata a capo. Dal momento che un file binario non è strutturato in righe, la sua<br />

lettura è complicata e può portare ad errori di vario genere.<br />

Esempi di file di testo sono i file sorgente dei programmi, mentre esempi di file binari sono<br />

costituiti dai file eseguibili, dai file compressi (zip, ecc.), da alcuni tipi di file di immagini (jpeg,<br />

gif, tiff, ecc.). Tipicamente il tipo di file può essere individuato d<strong>alla</strong> sua estensione, ovvero dagli<br />

uno i più caratteri finali del nome del file, che solitamente segue il carattere “punto”. Esempi di<br />

estensione sono:<br />

• .c <strong>per</strong> i file sorgente di programmi in C (testo)<br />

• .zip <strong>per</strong> i file compressi in formato zip (binario)<br />

• .jpg o jpeg <strong>per</strong> le immagini compresse in formato JPEG (binario)<br />

Per comprendere meglio la differenza tra le due tipologie di file, si pensi di dover memorizzare<br />

un numero intero in un file. La sua rappresentazione cambia a seconda che lo si memorizzi in un<br />

file di testo piuttosto che in un file binario. Un numero intero memorizzato in un file binario si<br />

114

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!