Partager via


fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l

Lit les données mises en forme à partir d'un flux. Ces versions fscanf, _fscanf_l, fwscanf, _fwscanf_l présentent des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le 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 ]... 
);

Paramètres

  • stream
    Pointeur vers la structure FILE.

  • format
    Chaîne de contrôle de format.

  • argument
    Arguments facultatifs.

  • locale
    Paramètres régionaux à utiliser.

Valeur de retour

Chacune de ces fonctions retourne le nombre de champs qui sont correctement convertis et assignés ; la valeur de retour n'inclut pas les champs qui ont été lus mais non assignés. La valeur de retour 0 indique qu'aucun champ n'a été assigné. Si une erreur se produit, ou si la fin du flux de fichiers est atteinte avant la première conversion, la valeur de retour est EOF pour fscanf_s et fwscanf_s.

Ces fonctions valident leurs paramètres. Si stream est un pointeur de fichier valide ou format est un pointeur null, ces fonctions appelleront le gestionnaire de paramètres non valide, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent EOF et définissent errno avec la valeur EINVAL.

Notes

La fonction fscanf_s lit les données à partir de la position actuelle de stream dans les emplacements fournis par la liste d'arguments argument (s'il en existe). Chaque argument doit être un pointeur vers une variable dont le type correspond à un spécificateur de type dans format. format contrôle l'interprétation des champs d'entrée et a le même formulaire et la même fonction que l'argument format pour scanf_s; consultez Champs de spécification de format : fonctions scanf et wscanf pour une description de format. fwscanf_s est une version à caractère large de fscanf_s; l'argument de format de fwscanf_s est une chaîne à caractères larges. Ces fonctions se comportent de la même façon si le flux est ouvert en mode ANSI. fscanf_s ne prend actuellement pas en charge la saisie à partir d'un flux d'UNICODE.

La principale différence entre les fonctions plus sécurisées (qui disposent du suffixe _s ) et les autres versions réside dans le fait que les fonctions plus sécurisées requièrent que la taille en caractères de chaque type de champ c, C, s, S et [ soit passée comme argument immédiatement après la variable. Pour plus d’informations, consultez scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l et Spécification de largeur scanf.

Notes

Le paramètre size est de type unsigned, et non du type size_t.

Les versions de ces fonctions ayant le suffixe _l sont identiques, sauf qu'elles utilisent les paramètres régionaux passés au lieu des paramètres régionaux du thread actuel.

Mappages de routines de texte générique

Routine TCHAR.H

_UNICODE & _MBCS non définis

_MBCS défini

_UNICODE défini

_ftscanf_s

fscanf_s

fscanf_s

fwscanf_s

_ftscanf_s_l

_fscanf_s_l

_fscanf_s_l

_fwscanf_s_l

Configuration requise

Fonction

En-tête requis

fscanf_s, _fscanf_s_l

<stdio.h>

fwscanf_s, _fwscanf_s_l

<stdio.h> ou <wchar.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité.

Exemple

// 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 );
   }
}
  

Équivalent .NET Framework

System::IO::StreamReader::ReadLine. Voir également des méthodes Parse, telles que System::Double::Parse.

Voir aussi

Référence

E/S de flux

_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