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|