Condividi tramite


fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l

Legge i dati formattati da un flusso. Queste versioni di fscanf, _fscanf_l, fwscanf, _fwscanf_l contengono i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.

int fscanf_s( 
   FILE *stream,
   const char *format [,
   argument ]... 
);
int _fscanf_s_l( 
   FILE *stream,
   const char *format,
   locale_t locale [,
   argument ]... 
);
int fwscanf_s( 
   FILE *stream,
   const wchar_t *format [,
   argument ]... 
);
int _fwscanf_s_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 correttamente e assegnati; 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_s e fwscanf_s.

Queste funzioni convalidano i parametri. Se stream è un puntatore file non valido o format è un puntatore null, queste funzioni richiamano 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_s 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 e ha lo stesso form e funziona come l'argomento format per scanf_s; vedere Campi per la specifica di formato: funzioni scanf e wscanf per una descrizione di format. fwscanf_s è una versione a caratteri estesi di fscanf_s; l'argomento format in fwscanf_s è una stringa a caratteri estesi. Queste funzioni si comportano in modo identico se il flusso viene aperto in modalità ANSI. fscanf_s attualmente non supporta l'input da un flusso di UNICODE.

La differenza principale tra più funzioni protette (che abbiano il suffisso _s) e le altre versioni è che le funzioni più protette richiedono la dimensione dei caratteri di ogni c, C, s, Se del campo di tipo [ da essere passato come un argomento immediatamente dopo la variabile. Per ulteriori informazioni, vedere scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l e Specifica della larghezza per scanf.

Nota

Il parametro di dimensione è di tipo unsigned, non size_t.

Le versioni di queste funzioni che hanno il suffisso _l sono identiche ad eccezione del fatto che utilizzano il parametro delle impostazioni locali che viene passato al posto di quelle della thread corrente.

Mapping di routine su testo generico

Routine TCHAR.H

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_ftscanf_s

fscanf_s

fscanf_s

fwscanf_s

_ftscanf_s_l

_fscanf_s_l

_fscanf_s_l

_fwscanf_s_l

Requisiti

Funzione

Intestazione obbligatoria

fscanf_s, _fscanf_s_l

<stdio.h>

fwscanf_s, _fwscanf_s_l

<stdio.h> o <wchar.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità.

Esempio

// crt_fscanf_s.c
// This program writes formatted
// data to a file. It then uses fscanf to
// read the various data back from the file.
 
#include <stdio.h>
#include <stdlib.h>

FILE *stream;

int main( void )
{
   long l;
   float fp;
   char s[81];
   char c;

   errno_t err = fopen_s( &stream, "fscanf.out", "w+" );
   if( err )
      printf_s( "The file fscanf.out was not opened\n" );
   else
   {
      fprintf_s( stream, "%s %ld %f%c", "a-string", 
               65000, 3.14159, 'x' );
      // Set pointer to beginning of file:
      fseek( stream, 0L, SEEK_SET );

      // Read data back from file:
      fscanf_s( stream, "%s", s, _countof(s) );
      fscanf_s( stream, "%ld", &l );

      fscanf_s( stream, "%f", &fp );
      fscanf_s( stream, "%c", &c, 1 );

      // 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_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l

fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l

scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l

sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l

fscanf, _fscanf_l, fwscanf, _fwscanf_l