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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

12.3.1 A<strong>per</strong>tura di file<br />

Le variabili di tipo FILE sono inizializzate chiamando la funzione di libreria fopen, la quale è<br />

dichiarata in stdio.h come segue:<br />

FILE *fopen(char *path, char *mode);<br />

Come si nota, essa accetta due parametri di tipo stringa (puntatore a carattere):<br />

• path contiene il <strong>per</strong>corso e il nome del file da aprire;<br />

• mode specifica il modo con il quale aprire il file.<br />

Un file può infatti essere a<strong>per</strong>to <strong>per</strong> diversi scopi: lettura, scrittura e append, essendo quest’ultima<br />

una forma particolare di scrittura. La stringa mode può quindi essere una delle seguenti:<br />

r apre il file in lettura; l’accesso al file avviene dal suo inizio;<br />

r+ apre il file in lettura e scrittura; l’accesso al file avviene dal suo inizio;<br />

w apre il file in scrittura; se il file esiste, esso viene sovrascritto, altrimenti un nuovo file viene<br />

creato; l’accesso al file avviene dal suo inizio;<br />

w+ apre il file in lettura e scrittura; se il file esiste, esso viene sovrascritto, altrimenti un nuovo<br />

file viene creato; l’accesso al file avviene dal suo inizio;<br />

a apre il file in append, cioè <strong>per</strong> una scrittura che avviene a partire d<strong>alla</strong> fine del file; se il<br />

file non esiste, esso viene creato;<br />

a+ apre il file in lettura e append; se il file non esiste, un nuovo file viene creato; l’accesso in<br />

lettura avviene dall’inizio del file, mentre la scrittura è sempre effettuata <strong>alla</strong> fine del file.<br />

Per completezza, c’è da precisare che è anche possibile aggiungere il carattere “b” <strong>alla</strong> fine o<br />

in mezzo a qualsiasi precedente combinazione di caratteri (es., ottenendo wb o ab+). Questo<br />

carattere indica esplicitamente che il file da aprire è binario. In genere questa indicazione esplicita<br />

è necessaria <strong>per</strong> ragioni di portabilità, soltanto se si prevede di usare il programma su sistemi<br />

o<strong>per</strong>ativi eterogenei.<br />

La funzione fopen restituisce un puntatore di tipo FILE correttamente inizializzato se l’o<strong>per</strong>azione<br />

ha avuto successo, altrimenti ritorna NULL. Tipici errori che si possono avere nell’a<strong>per</strong>tura<br />

di un file sono, <strong>per</strong> esempio:<br />

• il tentativo di aprire in lettura un file che non esiste<br />

• aprire in scrittura un file read-only (es. i file su un CD-ROM)<br />

• aprire un file <strong>per</strong> il quale non si dispongono dei necessati <strong>per</strong>messi.<br />

Per esempio, le linee di codice seguenti<br />

FILE *fin, *fout;<br />

if (!(fin = fopen("matrice.dat", "r"))) {<br />

<strong>per</strong>ror("matrice.dat");<br />

exit(1);<br />

116

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

Saved successfully!

Ooh no, something went wrong!