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.

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

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