Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 38 di 47
  • livello principiante
Indice lezioni

Funzioni fprintf e fscanf

Le funzioni che leggono e che scrivono sullo stream di file.
Le funzioni che leggono e che scrivono sullo stream di file.
Link copiato negli appunti

Una volta aperto un file con la funzione fopen, possiamo usare due funzioni per accedervi: la fprintf e la fscanf che, per quanto simili printf e scanf, operano sullo stream del file aperto da fopen(); la forma con la quale si presentano le due funzioni di C è la seguente:

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

La fprintf, come si può intuire, scrive sullo stream, mentre la fscanf legge dallo stream; entrambe seguono per i parametri, tranne il primo, quello che è già stato detto per printf e scanf e che riportiamo sinteticamente qui sotto per comodità di consultazione.

Formato e argomenti

La stringa formato ha due tipi di argomenti, i caratteri ordinari che vengono copiati nello stream di output, e le specifiche di conversione, contraddistinte dal simbolo percentuale (%) e da un carattere, che illustriamo di seguito e che specifica il formato con il quale stampare le variabili presenti nella lista di argomenti:

Stringa di controllo Cosa viene stampato
%d, %i Intero decimale
%f Valore in virgola mobile
%c Un carattere
%s Una stringa di caratteri
%o Numero ottale
%x, %X Numero esadecimale
%u Intero senza segno
%f Numero reale (float o double)
%e, %E Formato scientifico
%% Stampa il carattere %

Naturalmente fprintf e fscanf possono lavorare con gli stream predefiniti, stdout - stderr e stdin rispettivamente, come mostrato dall'esempio seguente:

/* stampa un messaggio di errore */
fprintf(stderr, "Impossibile continuare!n");
/* scrive a video un messaggio */
fprintf(stdout, "Operazione completata!n");
/* riceve da tastiera una stringa e la
* salva nella variabile "miastringa" */
fscanf(stdin, "%s", miastringa);

Esistono, inoltre altre quattro funzioni che operano su file scrivendo un carattere per volta, esattamente come fanno la getchar e la putchar per gli stream predefiniti; queste quattro funzioni sono:

int getc(FILE *stream);
int fgetc(FILE *stream);
int putc(char ch, FILE *stream);
int fputc(char ch, FILE *stream);

Una curiosità risiede nel fatto che getc è una macro del preprocessore, mentre fgetc è una funzione di libreria, ma fanno esattamente la stessa cosa.

Ti consigliamo anche