fscanf
, _fscanf_l
, fwscanf
_fwscanf_l
Leggere dati formattati da un flusso. Sono disponibili versioni più sicure di queste funzioni; vedere fscanf_s
, _fscanf_s_l
, fwscanf_s
, _fwscanf_s_l
.
Sintassi
int fscanf(
FILE *stream,
const char *format [,
argument ]...
);
int _fscanf_l(
FILE *stream,
const char *format,
_locale_t locale [,
argument ]...
);
int fwscanf(
FILE *stream,
const wchar_t *format [,
argument ]...
);
int _fwscanf_l(
FILE *stream,
const wchar_t *format,
_locale_t locale [,
argument ]...
);
Parametri
stream
Puntatore alla struttura FILE
.
format
Stringa di controllo del formato.
argument
Argomenti facoltativi.
locale
Impostazioni locali da usare.
Valore restituito
Ognuna di queste funzioni restituisce il numero di campi convertiti e assegnati correttamente; Il valore restituito non include campi letti ma non assegnati. Un valore restituito pari a 0 indica che nessun campo è stato assegnato. In caso di errore o se viene raggiunta la fine del flusso di file prima della prima conversione, il valore restituito è EOF
per fscanf
e fwscanf
.
Queste funzioni convalidano i relativi parametri. Se stream
o format
è un NULL
puntatore, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni restituiscono EOF
e impostano errno
su EINVAL
.
Osservazioni:
La funzione fscanf
legge i dati dalla posizione corrente di stream
nelle posizioni fornite date da argument
(se presenti). Ogni argument
deve essere un puntatore a una variabile di un tipo che corrisponde a un identificatore di tipo in format
. format
controlla l'interpretazione dei campi di input e ha la stessa forma e funzione dell'argomento format
per scanf
. Per una descrizione di format
, vedere scanf
.
fwscanf
è una versione a caratteri wide di fscanf
. L'argomento del formato per fwscanf
è una stringa di caratteri wide. Queste funzioni si comportano in modo identico se il flusso viene aperto in modalità ANSI. fscanf
non supporta attualmente l'input da un flusso UNICODE.
Le versioni di queste funzioni con il suffisso _l
sono identiche ad eccezione per il fatto che utilizzano il parametro delle impostazioni locali passato al posto di quelle del thread corrente.
Mapping di routine di testo generico
TCHAR.H routine |
_UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_ftscanf |
fscanf |
fscanf |
fwscanf |
_ftscanf_l |
_fscanf_l |
_fscanf_l |
_fwscanf_l |
Per altre informazioni, vedere Formattare i campi delle specifiche: scanf
e wscanf
le funzioni.
Requisiti
Funzione | Intestazione obbligatoria |
---|---|
fscanf , _fscanf_l |
<stdio.h> |
fwscanf , _fwscanf_l |
<stdio.h> oppure <wchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// crt_fscanf.c
// compile with: /W3
// This program writes formatted
// data to a file. It then uses fscanf to
// read the various data back from the file.
#include <stdio.h>
FILE *stream;
int main( void )
{
long l;
float fp;
char s[81];
char c;
if( fopen_s( &stream, "fscanf.out", "w+" ) != 0 )
printf( "The file fscanf.out was not opened\n" );
else
{
fprintf( stream, "%s %ld %f%c", "a-string",
65000, 3.14159, 'x' );
// Security caution!
// Beware loading data from a file without confirming its size,
// as it may lead to a buffer overrun situation.
// Set pointer to beginning of file:
fseek( stream, 0L, SEEK_SET );
// Read data back from file:
fscanf( stream, "%s", s ); // C4996
fscanf( stream, "%ld", &l ); // C4996
fscanf( stream, "%f", &fp ); // C4996
fscanf( stream, "%c", &c ); // C4996
// Note: fscanf is deprecated; consider using fscanf_s instead
// Output data read:
printf( "%s\n", s );
printf( "%ld\n", l );
printf( "%f\n", fp );
printf( "%c\n", c );
fclose( stream );
}
}
a-string
65000
3.141590
x
Vedi anche
I/O di flusso
_cscanf
, _cscanf_l
, _cwscanf
_cwscanf_l
fprintf
, _fprintf_l
, fwprintf
_fwprintf_l
scanf
, _scanf_l
, wscanf
_wscanf_l
sscanf
, _sscanf_l
, swscanf
_swscanf_l
fscanf_s
, _fscanf_s_l
, fwscanf_s
_fwscanf_s_l