Funzione fclose

La chiusura di un file in C avviene tramite la funzione fclose e la sua chiamata deve essere effettuata nel momento in cui non risulta essere più necessario accedere al file, in questo modo viene rilasciata la memoria che era stata allocata dal programma. Di seguito viene riportata la sua sintassi:


 
int fclose(FILE *fptr);


dove fptr è il puntatore al file aperto, definito dalla chiamata della funzione fopen. Possiamo notare che la funzione fclose restituisce un intero, in particolare restituirà 0 se lo stream è stato correttamente chiuso, mentre nel caso in cui l’operazione di chiusura non è andata a buon fine restituirà EOF (End Of File), che tipicamente assume il valore di intero negativo -1.

Esempio chiusura file con fclose in C

Nel seguente esempio viene ripreso un caso della pagine fopen, in particolare apriamo un file denominato test.txt con la funzione fopen in modalità w. Una volta effettuate le azioni desiderate, dobbiamo chiudere il file tramite la funzione fclose.


 
#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");
    }

    fclose(fptr);
}

Se andiamo a stampare a schermo tramite la funzione printf il valore intero che viene restituito dalla funzione fclose nel seguente modo:


 
printf("%d", fclose(fptr));
 

Output: File è stato aperto correttamente 0

il programma stamperà 0, ovvero il file è stato chiuso correttamente.

Mentre se riprendiamo il primo esempio della pagina precedente, ovvero cerchiamo di aprire un file non esistente in modalità r, oltre ad avere il puntatore fptr che punta a NULL, se chiamiamo la funzione fclose ci verrà restituito il valore -1 o EOF, in quanto l’operazione di chiusura non è potuta avvenire dato che fptr non punta ad alcun file.


 
#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");
    }

    printf("%d", fclose(fptr));
}


Output: Errore durante l'apertura del file! -1

Indice pagine linguaggio C: