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 ; voir 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 routine de texte générique
Routine TCHAR.H | _UNICODE et _MBCS non défini |
_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 plateforme Windows universelle (UWP). Les handles de flux standard associés à la console, stdin
et stdout
stderr
doivent être redirigés avant que les fonctions d’exécution 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 mathématique 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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour