Funzione libreria C - fscanf ()
Descrizione
La funzione di libreria C. int fscanf(FILE *stream, const char *format, ...) legge l'input formattato da un flusso.
Dichiarazione
Di seguito è riportata la dichiarazione per la funzione fscanf ().
int fscanf(FILE *stream, const char *format, ...) 
    Parametri
stream - Questo è il puntatore a un oggetto FILE che identifica il flusso.
format- Questa è la stringa C che contiene uno o più dei seguenti elementi: carattere di spazio vuoto, carattere di spazio vuoto e specificatori di formato . Un identificatore di formato sarà as[=%[*][width][modifiers]type=], che è spiegato di seguito -
| Sr.No. | Argomento e descrizione | 
|---|---|
| 1 |   * Questo è un asterisco iniziale opzionale che indica che i dati devono essere letti dal flusso ma ignorati, cioè non sono memorizzati nell'argomento corrispondente.  |  
      
| 2 |   width Specifica il numero massimo di caratteri da leggere nell'operazione di lettura corrente.  |  
      
| 3 |   modifiers Specifica una dimensione diversa da int (nel caso di d, i e n), unsigned int (nel caso di o, ue x) o float (nel caso di e, f e g) per i dati puntati dal argomento aggiuntivo corrispondente: h: short int (per d, ien), o unsigned short int (per o, ue x) l: long int (per d, i e n), o unsigned long int (per o, ue x), o doppio (per e, f e g) L: lungo doppio (per e, f e g)  |  
      
| 4 |   type Un carattere che specifica il tipo di dati da leggere e come si prevede che vengano letti. Vedere la tabella successiva.  |  
      
specificatori di tipo fscanf
| genere | Input di qualificazione | Tipo di argomento | 
|---|---|---|
| c | Carattere singolo: legge il carattere successivo. Se viene specificata una larghezza diversa da 1, la funzione legge i caratteri di larghezza e li memorizza nelle posizioni successive dell'array passato come argomento. Nessun carattere nullo viene aggiunto alla fine. | char * | 
| d | Numero intero decimale: numero facoltativamente preceduto da un segno + o - | int * | 
| e, E, f, g, G | Virgola mobile: numero decimale contenente un punto decimale, facoltativamente preceduto da un segno + o - e facoltativamente seguito dal carattere e o E e da un numero decimale. Due esempi di voci valide sono -732.103 e 7.12e4 | galleggiante * | 
| o | Numero intero ottale: | int * | 
| S | Stringa di caratteri. Questo leggerà i caratteri successivi finché non viene trovato uno spazio bianco (i caratteri di spazio vuoto sono considerati vuoti, di nuova riga e di tabulazione). | char * | 
| u | Numero intero decimale senza segno. | int senza segno * | 
| x, X | Intero esadecimale | int * | 
additional arguments- A seconda della stringa di formato, la funzione potrebbe aspettarsi una sequenza di argomenti aggiuntivi, ciascuno contenente un valore da inserire invece di ogni tag% specificato nel parametro di formato (se presente). Dovrebbe esserci lo stesso numero di questi argomenti del numero di tag% che si aspettano un valore.
Valore di ritorno
Questa funzione restituisce il numero di elementi di input abbinati e assegnati con successo, che può essere inferiore a quello previsto o addirittura zero in caso di mancato abbinamento anticipato.
Esempio
L'esempio seguente mostra l'utilizzo della funzione fscanf ().
#include <stdio.h>
#include <stdlib.h>
int main () {
   char str1[10], str2[10], str3[10];
   int year;
   FILE * fp;
   fp = fopen ("file.txt", "w+");
   fputs("We are in 2012", fp);
   
   rewind(fp);
   fscanf(fp, "%s %s %s %d", str1, str2, str3, &year);
   
   printf("Read String1 |%s|\n", str1 );
   printf("Read String2 |%s|\n", str2 );
   printf("Read String3 |%s|\n", str3 );
   printf("Read Integer |%d|\n", year );
   fclose(fp);
   
   return(0);
} 
    Compiliamo ed eseguiamo il programma sopra che produrrà il seguente risultato:
Read String1 |We|
Read String2 |are|
Read String3 |in|
Read Integer |2012| 
                        