Concetti Chiave
- Per utilizzare un file in C è necessario creare uno stream associato tramite la funzione fopen(), che richiede il nome del file e la modalità di apertura.
- Le modalità di apertura dei file includono lettura, scrittura, append, lettura e scrittura, ognuna con comportamenti specifici riguardo alla modifica del contenuto esistente.
- Per chiudere un file aperto si utilizza la funzione fclose(), fondamentale per gestire correttamente le risorse nel programma.
- Le funzioni di scrittura come fprintf(), fputc() e fputs() consentono di stampare dati su un file, simili a printf() ma per file.
- Per la lettura di file testuali, si possono usare fscanf(), fgetc() e fgets(), che permettono di acquisire dati in modo simile a scanf().
Creazione e apertura 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.
Chiusura e operazioni sui file
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().
Domande da interrogazione
- Qual è la funzione principale per aprire un file in C e quali modalità di apertura sono disponibili?
- Come si chiude un file aperto in C e perché è importante farlo?
- Quali funzioni si utilizzano per scrivere e leggere dati da un file in C?
La funzione principale per aprire un file in C è `fopen()`, che associa uno stream a un file specificato. Le modalità di apertura disponibili includono lettura ("r"), scrittura ("w"), append ("a"), lettura e scrittura ("r+"), scrittura e lettura ("w+"), e lettura e append ("a+").
Un file aperto in C si chiude utilizzando la funzione `fclose()`. È importante chiudere i file per liberare le risorse e garantire che tutte le operazioni di scrittura siano completate prima che il programma termini.
Per scrivere dati su un file si utilizzano le funzioni `fprintf()`, `fputc()`, e `fputs()`, mentre per leggere si usano `fscanf()`, `fgetc()`, e `fgets()`. Queste funzioni sono equivalenti alle loro controparti standard di input/output.