vscanf
, vwscanf
Lit les données mises en forme du flux d'entrée standard. Des versions plus sécurisées de ces fonctions sont disponibles. Consultez vscanf_s
, vwscanf_s
.
Syntaxe
int vscanf(
const char *format,
va_list arglist
);
int vwscanf(
const wchar_t *format,
va_list arglist
);
Paramètres
format
Format de la chaîne de contrôle.
arglist
Liste d’arguments de variable.
Valeur retournée
Retourne le nombre de champs qui sont 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é.
S’il format
s’agit d’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
.
Pour plus d’informations sur ces codes d’erreur et d’autres codes d’erreur, consultez , , _sys_errlist
_doserrno
et _sys_nerr
.errno
Notes
La fonction vscanf
lit les données du flux d’entrée standard stdin
et les écrit aux emplacements indiqués par la 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
. Si une copie se produit entre des chaînes qui se chevauchent, le comportement est indéfini.
Important
Lorsque vous utilisez vscanf
pour lire une chaîne, spécifiez toujours une largeur pour le format %s (par exemple, « %32s » au lieu de « %s ») ; sinon, une entrée au format incorrect peut entraîner un dépassement de mémoire tampon. En guise d’alternative, vous pouvez utiliser vscanf_s
, vwscanf_s
ou fgets
.
vwscanf
est une version à caractères larges de vscanf
; l'argument format
de vwscanf
est une chaîne à caractères larges. vwscanf
et vscanf
se comportent de la même façon si le flux est ouvert en mode ANSI. vscanf
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 |
---|---|---|---|
_vtscanf |
vscanf |
vscanf |
vwscanf |
Pour plus d’informations, consultez Champs de spécification de format : scanf
et wscanf
fonctions.
Spécifications
Routine | En-tête requis |
---|---|
vscanf |
<stdio.h> |
vwscanf |
<stdio.h> ou <wchar.h> |
La console n’est pas prise en charge dans les applications de la plateforme Windows universelle (UWP). Les handles de flux standard associés à la console (stdin
, stdout
et stderr
) doivent être redirigés pour que les fonctions de runtime C puissent les utiliser dans les applications UWP. Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// crt_vscanf.c
// compile with: /W3
// This program uses the vscanf and vwscanf functions
// to read formatted input.
#include <stdio.h>
#include <stdarg.h>
int call_vscanf(char *format, ...)
{
int result;
va_list arglist;
va_start(arglist, format);
result = vscanf(format, arglist);
va_end(arglist);
return result;
}
int call_vwscanf(wchar_t *format, ...)
{
int result;
va_list arglist;
va_start(arglist, format);
result = vwscanf(format, arglist);
va_end(arglist);
return result;
}
int main( void )
{
int i, result;
float fp;
char c, s[81];
wchar_t wc, ws[81];
result = call_vscanf( "%d %f %c %C %80s %80S", &i, &fp, &c, &wc, s, ws );
printf( "The number of fields input is %d\n", result );
printf( "The contents are: %d %f %c %C %s %S\n", i, fp, c, wc, s, ws);
result = call_vwscanf( L"%d %f %hc %lc %80S %80ls", &i, &fp, &c, &wc, s, ws );
wprintf( L"The number of fields input is %d\n", result );
wprintf( L"The contents are: %d %f %C %c %hs %s\n", i, fp, c, wc, s, ws);
}
71 98.6 h z Byte characters
36 92.3 y n Wide charactersThe number of fields input is 6
The contents are: 71 98.599998 h z Byte characters
The number of fields input is 6
The contents are: 36 92.300003 y n Wide characters
Voir aussi
Prise en charge des fonctions mathématiques et à virgule flottante
E/S de flux
Paramètres régionaux
fscanf
, , _fscanf_l
fwscanf
, ,_fwscanf_l
printf
, , _printf_l
wprintf
, ,_wprintf_l
sprintf
, , _sprintf_l
swprintf
, , _swprintf_l
__swprintf_l
sscanf
, , _sscanf_l
swscanf
, ,_swscanf_l
vscanf_s
, vwscanf_s