Scrivere un carattere in un file, funzione fputc

Una volta aperto un file in C con la funzione fopen, è possibile scrivere un carattere (unsigned char) in tale file utilizzando la funzione fputc. Di seguito viene riportata la sintassi di fputc:


 
int fputc(int c, FILE *fp);


dove c è il carattere da scrivere, mentre fp è il puntatore al file ottenuto dalla funzione fopen, su cui scrivere il carattere c. Il primo parametro è di tipo intero in quanto ogni carattere è associato ad un numero intero definito dal codice ASCII.

La funzione fputc restituisce un intero in base al risultato dell’operazione di scrittura. In caso di successo restituisce il carattere scritto sul file, mentre in caso di errore restituisce -1, o EOF.

Esempio scrittura di un carattere su un file con fputc

Nel seguente esempio il programma permette all’utente di digitare un carattere che verrà poi inserito all’interno del file tramite la funzione fputc.


Innanzitutto dobbiamo aprire il file con fopen e verificare che il puntatore non sia null. Successivamente chiediamo all’utente, tramite una printf, di digitare un carattere che verrà memorizzato in una variabile di tipo char usando la funzione scanf. A questo punto non resta che scrivere il carattere, inserito dall’utente, nel file utilizzando la funzione fputc.


 
#include <stdio.h>

void main(){
    char c;
    FILE *fptr;

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

    if(fptr == NULL){
        printf("Errore durante l'apertura del file!\n");
    } else {
        printf("Digita un carattere da inserire nel file: ");
        scanf("%c", &c);
        fputc(c, fptr);
    }

    fclose(fptr);
}

Possiamo anche stampare a schermo il valore ritornato dalla fputc, per verificare che l’operazione di scrittura sia avvenuta con successo.


 
int car = fputc(c, fptr);
printf("%d\n", car);
printf("%c\n", car);

Basta ricordarsi che per visualizzare il carattere inserito bisogna usare lo specificatore di formato %c, altrimenti usando %d viene stampato il corrispettivo valore intero definito nella tabella ASCII.

Indice pagine linguaggio C: