fscanf, _fscanf_l, fwscanf, _fwscanf_l

Lisent les données mises en forme d’un flux. Des versions plus sécurisées de ces fonctions sont disponibles ; voir , , fwscanf_s_fscanf_s_l, _fwscanf_s_l.fscanf_s

Syntaxe

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 ]...
);

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 retournée

Chacune de ces fonctions retourne le nombre de champs correctement convertis et affectés ; la valeur de retour n’inclut pas les champs qui ont été lus mais qui n’ont pas été affecté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 fichier est atteinte avant la première conversion, la valeur de retour est EOF pour fscanf et fwscanf.

Ces fonctions valident leurs paramètres. Si stream ou format est un NULL pointeur, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. 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 lit les données à partir de la position actuelle de stream aux emplacements éventuels fournis par argument. Chaque argument doit être un pointeur vers une variable d'un type qui correspond à un spécificateur de type dans format. format contrôle l’interprétation des champs d’entrée et a la même forme et fonction que l’argument format pour scanf; voir scanf pour une description de format.

fwscanf est une version à caractères larges de fscanf. L’argument format pour fwscanf est une chaîne de caractères larges. Ces fonctions se comportent de la même façon si le flux est ouvert en mode ANSI. fscanf ne prend pas en charge actuellement les entrées à partir d'un flux UNICODE.

Les versions de ces fonctions avec 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 routine de texte générique

TCHAR.H Routine _UNICODE et _MBCS non défini _MBCS Défini _UNICODE Défini
_ftscanf fscanf fscanf fwscanf
_ftscanf_l _fscanf_l _fscanf_l _fwscanf_l

Pour plus d’informations, consultez Champs de spécification de format : scanf et wscanf fonctions.

Spécifications

Fonction En-tête requis
fscanf, _fscanf_l <stdio.h>
fwscanf, _fwscanf_l <stdio.h> ou <wchar.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

// 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

Voir aussi

E/S de flux
_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