Partager via


fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l

Données mises en forme d'un flux de données.Ce sont des versions de fscanf, _fscanf_l, fwscanf, _fwscanf_l avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du 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 d' FILE .

  • format
    Chaîne de format.

  • argument
    arguments facultatifs.

  • locale
    Les paramètres régionaux à utiliser.

Valeur de retour

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

ces fonctions valident leurs paramètres.Si le flux est pointeur de fichier de nvalid d'Ian, ou format est un pointeur null, ces fonctions appellent le gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, ces fonctions EOF de retour et errno défini à EINVAL.

Notes

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

La principale différence entre les fonctions sécurisées (avec le suffixe d' _s) et les fonctions plus anciennes est que les fonctions sécurisées requièrent la taille de caractères de chaque c, d' C, d' s, d' Set du champ de type d' [ à passer en tant qu'argument qui suit immédiatement la variable.Pour plus d'informations, consultez scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l et spécification de la largeur de scanf.

[!REMARQUE]

le paramètre de taille est de type unsigned, pas size_t.

Les versions de ces fonctions par le suffixe d' _l sont identiques mais elles utilisent le paramètre de paramètres régionaux passé au lieu des paramètres régionaux du thread courant.

mappages de routines de texte générique

routine de TCHAR.H

_MBCS & de _UNICODE non défini

_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 des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.

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 : : E/S : : StreamReader : : ReadLine. Consultez également des méthodes d' Parse , telles que System : : double : : analysez.

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