Condividi tramite


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. formatcontrolla 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