Scrivere su un file, funzione fprintf

Una volta aperto un file con la funzione fopen, si può scrivere su tale file attraverso la funzione fprintf che rappresenta una versione più generale della funzione printf, in quanto permette di indicare lo stream su cui scrivere i dati. La sintassi della funzione fprintf è la seguente:


 
int fprintf(FILE *fptr, char *formato, argomenti ...);


dove fptr è il puntatore al file aperto precedentemente con la funzione fopen, il parametro formato è la stringa che contiene il testo da scrivere sul file e opzionalmente può contenere specificatori di formato. In particolare i parametri formato e argomenti hanno le stesse funzionalità dei parametri presenti nella funzione printf. Quindi l’unica differenza con la printf sta nel primo parametro che indica lo stream.

La funzione fprintf restituisce un numero intero positivo se la funzione è riuscita a scrivere sullo stream indicato e tale numero rappresenta il numero di caratteri scritti, mentre in caso di errore la funzione restituisce il valore -1 o EOF.

Oss: la funzione fprintf può essere utilizzata anche per scrivere a schermo utilizzando lo stream stdout, oppure sullo stream error tramite stderr.

Esempio scrittura su file con funzione fprintf

I seguenti esempi rappresentano due situazioni diverse, nel primo esempio apriamo un file, denominato test.txt, in scrittura, mentre nel secondo caso useremo la modalità r per aprire il file in lettura. In entrambi i casi proveremo a scrivere sul file ed a stampare a schermo il numero ritornato dalla funzione fprintf.


 
#include <stdio.h>

void main(){
    FILE *fptr;

    fptr = fopen("test.txt", "w");

    if(fptr == NULL){
        printf("Errore durante l'apertura del file!\n");
    } else {
        int x = fprintf(fptr, "Hello world!");
        printf("%d", x);
    }

    fclose(fptr);
}


Output: 12

Una volta aperto il file con la funzione fopen e verificato che il puntatore fptr non sia NULL, proviamo a scrivere sul file test.txt la frase “Hello world!” con la funzione fprintf. Per verificare il valore ritornato dalla fprintf usiamo una variabile chiamata “x”, che verrà stampata nella riga successiva con una printf. Una volta definite le operazioni da effettuare sul file, lo chiudiamo usando la funzione fclose in modo da evitare possibili problemi.

Se andiamo a eseguire il programma ci verrà stampato a video “12”, ovvero il numero di caratteri scritti nel file. Se andiamo ad aprire il file test.txt, vedremo che effettivamente è stata scritta la frase che avevamo definito nella fprintf.

Nota: per aggiungere del testo in un file senza che questo venga cancellato ogni volta che chiamiamo la funzione fprintf, basta aprire il file in modalità append, in questo modo il testo verrà aggiunto in fondo al file.

Se, invece, apriamo il file in sola lettura la funzione fprintf restituisce il valore -1 dato che non può effettuare operazioni di scrittura su un file aperto solo in modalità lettura.


 
#include <stdio.h>

void main(){
    FILE *fptr;

    fptr = fopen("test.txt", "r");

    if(fptr == NULL){
        printf("Errore durante l'apertura del file!\n");
    } else {
        int x = fprintf(fptr, "Hello world!");
        printf("%d", x);
    }

    fclose(fptr);
}


Output: -1

Indice pagine linguaggio C: