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