Programmazione.html.it

  Home page

   Guida Base

   Guida al Java

   Guida al C

   Guida al C++

   Guida al Delphi

   Guida a VB .NET

   Guida al Visual Basic

   Guida al Python

   Guida al'UML

  Forum di discussione
  HTML.it


Guida al linguaggio C
  LEZIONE:  Le funzioni fprintf e fscanf


Una volta che si è aperto un file con la funzione fopen, possiamo usare due funzioni per accedervi, queste sono la fprintf e la fscanf che, per quanto simili alla printf ed alla scanf, operano sullo stream del file aperto da fopen(); la forma con la quale si presentano le due funzioni è 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 nella lezione sette 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 la fprintf e la fscanf possono scrivere negli 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);

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



Torna a inizio pagina