vfscanf
, vfwscanf
Lit les données mises en forme d’un flux. Des versions plus sécurisées de ces fonctions sont disponibles. Consultez vfscanf_s
, vfwscanf_s
.
Syntaxe
int vfscanf(
FILE *stream,
const char *format,
va_list argptr
);
int vfwscanf(
FILE *stream,
const wchar_t *format,
va_list argptr
);
Paramètres
stream
Pointeur vers la structure FILE
.
format
Chaîne de contrôle de format.
arglist
Liste d’arguments de variable.
Valeur retournée
Chacune de ces fonctions retourne le nombre de champs qui sont correctement convertis et affectés. La valeur de retour n’inclut pas les champs qui sont lus, mais qui ne sont pas 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 vfscanf
et vfwscanf
.
Ces fonctions valident leurs paramètres. Si stream
ou format
est un pointeur Null, 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 vfscanf
lit les données à partir de la position actuelle de stream
aux emplacements fournis par liste d’arguments arglist
. Chaque argument de la liste doit être un pointeur désignant 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
.
vfwscanf
est une version à caractères larges de vfscanf
. L’argument format pour vfwscanf
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. vfscanf
ne prend pas en charge l’entrée d’un flux UNICODE.
Mappages de routines de texte générique
Routine TCHAR.H | _UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_vftscanf |
vfscanf |
vfscanf |
vfwscanf |
Pour plus d’informations, consultez Champs de spécification de format : scanf
et wscanf
fonctions.
Spécifications
Fonction | En-tête requis |
---|---|
vfscanf |
<stdio.h> |
vfwscanf |
<stdio.h> ou <wchar.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// crt_vfscanf.c
// compile with: /W3
// This program writes formatted
// data to a file. It then uses vfscanf to
// read the various data back from the file.
#include <stdio.h>
#include <stdarg.h>
FILE *stream;
int call_vfscanf(FILE * istream, char * format, ...)
{
int result;
va_list arglist;
va_start(arglist, format);
result = vfscanf(istream, format, arglist);
va_end(arglist);
return result;
}
int main(void)
{
long l;
float fp;
char s[81];
char c;
if (fopen_s(&stream, "vfscanf.out", "w+") != 0)
{
printf("The file vfscanf.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:
call_vfscanf(stream, "%s %ld %f%c", s, &l, &fp, &c);
// 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
vfscanf_s
, vfwscanf_s