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.
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 utilizzare.
Valore restituito
Ognuna di queste funzioni restituisce il numero di campi che vengono convertiti ed assegnati correttamente; il valore restituito non include i campi che sono stati letti ma non assegnati. Un valore restituito pari a 0 indica che nessun campo è stato assegnato. Se si verifica un errore, o se la fine del flusso di file viene raggiunta prima della prima conversione, il valore restituito è EOF per fscanf e fwscanf.
Queste funzioni convalidano i parametri. Se stream o format è un puntatore null, viene richiamato il gestore di parametro non valido, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni restituiscono EOF e impostano errno su EINVAL.
Note
La funzione fscanf legge i dati dalla posizione corrente di stream nelle locazioni fornite date da argument (se presenti). Ogni argument deve essere un puntatore a una variabile di un tipo che corrisponde a un tipo specificato in format. format controlla l'interpretazione dei campi di input ed i relativi modulo e funzione sono uguali a quelli dell'argomento format per scanf; vedere scanf per una descrizione di format*.*
fwscanf è una versione a caratteri estesi di fscanf; l'argomento formato su fwscanf è una stringa di caratteri estesi. Queste funzioni si comportano in modo identico se il flusso viene aperto in modalità ANSI. fscanf attualmente non supporta l'input da un flusso di 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
Routine TCHAR.H |
_UNICODE & _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_ftscanf |
fscanf |
fscanf |
fwscanf |
_ftscanf_l |
_fscanf_l |
_fscanf_l |
_fwscanf_l |
Per ulteriori informazioni, vedere Specifiche formato dei campi - funzioni scanf e funzioni wscanf.
Requisiti
Funzione |
Intestazione obbligatoria |
---|---|
fscanf, _fscanf_l |
<stdio.h> |
fwscanf, _fwscanf_l |
<stdio.h> o <wchar.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'Introduzione.
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 );
}
}
Equivalente .NET Framework
System::IO::StreamReader::ReadLine. Vedere anche i metodi Parse, come System::Double::Parse.
Vedere anche
Riferimenti
_cscanf, _cscanf_l, _cwscanf, _cwscanf_l
fprintf, _fprintf_l, fwprintf, _fwprintf_l
scanf, _scanf_l, wscanf, _wscanf_l