Come aprire un file in C, funzione fopen

L’apertura di un file in C avviene tramite la funzione fopen che permette di aprire un file con diverse modalità. Di seguito viene riportata la sua sintassi:

FILE  fopen(char nomefile, char *modalità);

dove nomefile è una stringa di caratteri che identifica il nome del file da aprire, mentre modalità specifica il modo in cui il file deve essere aperto. In particolare, le varie modalità disponibili per aprire un file di testo sono le seguenti:

  • r -> apre un file in lettura 

  • w -> crea un nuovo file in scrittura

  • a -> apre (o crea se non esiste) un file in modalità append (di aggiunta)

  • r+ -> apre un file in lettura/scrittura

  • w+ ->  crea un nuovo file in lettura/scrittura

  • a+ -> apre (o crea se non esiste) un file in modalità append per lettura/scrittura

è possibile anche definire file binari, in questo caso le modalità a disposizione sono le seguenti:

  • rb -> apre un file binario in lettura

  • wb -> apre un file binario in scrittura

  • ab -> apre (o crea se non esiste) un file binario in modalità append (di aggiunta)

Nota: nel caso in cui si verificasse un errore durante l’apertura di un file, la funzione fopen restituisce un puntatore a null. Risulta quindi importante effettuare un controllo con l’istruzione if appena dopo aver chiamato la funzione fopen().

Esempio apertura file con fopen in C

Di seguito vengono riportati due esempi di apertura di un file, chiamato test.txt, utilizzando due modalità diverse in situazione diverse.

Nel primo esempio utilizziamo la modalità r e il file test.txt non esiste.

#include <stdio.h> void main(){     FILE *fptr;     fptr = fopen("test.txt", "r");     if(fptr == NULL){         printf("Errore durante l'apertura del file!\n");     } else {         printf("File è stato aperto correttamente\n");     } }  

In questo caso verrà stampato "Errore durante l'apertura del file!", infatti il file test.txt non esiste e di conseguenza la funzione fopen restituisce un puntatore a null. Mentre se creiamo il file test.txt prima di lanciare il programma, non ci saranno errori.

Nel secondo esempio utilizziamo la modalità w e il file test.txt non esiste.

#include <stdio.h> void main(){     FILE *fptr;     fptr = fopen("test.txt", "w");     if(fptr == NULL){         printf("Errore durante l'apertura del file!\n");     } else {         printf("File è stato aperto correttamente\n");     } }  

In questo caso verrà stampato "File è stato aperto correttamente" in quanto la modalità w, crea un nuovo file a prescindere dall’esistenza o meno del file.

Invece nel caso in cui volessimo creare un file oppure aprirlo senza eliminare il contenuto, dobbiamo chiamare la funzione fopen con la modalità "a", cioè in modalità append. In questo modo si aggiunge il nuovo contenuto alla fine del contenuto precedente.

Per poter effettivamente scrivere o leggere da un file abbiamo bisogno di utilizzare ulteriori funzioni, come fprintf e fscanf, che verranno introdotte nelle pagine seguenti.