Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
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