Concetti Chiave
- La funzione fopen() crea uno stream associato a un file e restituisce un puntatore per il controllo dello stream.
- Le modalità di apertura dei file includono lettura, scrittura, append e combinazioni di lettura/scrittura.
- È essenziale chiudere gli stream aperti con fclose() prima che il programma termini per evitare perdite di memoria.
- Le funzioni fprintf(), fputc(), e fputs() permettono di scrivere dati testuali nei file in modo simile a printf(), putc() e puts().
- Per leggere file testuali si usano fscanf(), fgetc(), e fgets(), che funzionano in modo simile a scanf(), getc() e gets().
Apertura, chiusura, stampa e lettura di file
Per usare un file si deve prima creare uno stream associato.
FILE *fopen(const char *filename, const char *mode); (es. FILE *fp=fopen(file,”w”);)
La funzione fopen() apre e associa uno stream con file, il cui nome è filename.
Il valore di ritorno è un puntatore all’oggetto che controlla lo stream, o NULL se l’operazione non è possibile.
Le modalità di apertura in mode sono:
Lettura “r” Apre file esistente in sola lettura
Scrittura “w” Apre file in scrittura. Se esiste, troncato a 0. Se non esiste, viene creato.
Append “a” Apre file in scrittura. Se non esiste, viene creato. Se esiste, il contenuto non è modificato e i nuovi dati vengono scritti alla fine del file.
Lettura e scrittura “r+” Apre un file in lettura e scrittura, senza troncare contenuto.
Scrittura e lettura “w+” Apre un file in scrittura e lettura, troncandone il contenuto.
Lettura e append “a+” Apre un file in lettura (all’inizio del file) e scrittura (alla fine del file)
“b” Per aprire uno stream binario Eccetto gli stream standard, tutti gli stream aperti dovrebbero essere chiusi prima che il programma termini.
Per chiudere file la funzione è:
int fclose(FILE *stream); (es. fclose(fp);)
Per stampare i dati testualmente su un file si utilizzano le funzioni:
int fprintf ( FILE *stream , const char * format , ...);
int fputc (int c, FILE * stream );
int fputs ( const char *s, FILE * stream );
Queste funzioni sono equivalenti a printf(), putc() e puts().
Per leggere file testuali si usano le funzioni:
int fscanf ( FILE *stream , const char * format , ...);
int fgetc ( FILE * stream );
char * fgets ( char *s, int n, FILE * stream );
Queste funzioni sono quasi equivalenti a scanf(), getc() e gets().