_snscanf_s
, , _snscanf_s_l
_snwscanf_s
, ,_snwscanf_s_l
Lit des données mises en forme d’une longueur spécifiée à partir d’une chaîne. Ces fonctions sont des versions de , , , _snwscanf
_snwscanf_l
avec des améliorations de sécurité, comme décrit dans les fonctionnalités de sécurité dans le CRT. _snscanf_l
_snscanf
Syntaxe
int __cdecl _snscanf_s(
const char * input,
size_t length,
const char * format [, argument_list]
);
int __cdecl _snscanf_s_l(
const char * input,
size_t length,
const char * format,
_locale_t locale [, argument_list]
);
int __cdecl _snwscanf_s(
const wchar_t * input,
size_t length,
const wchar_t * format [, argument_list]
);
int __cdecl _snwscanf_s_l(
const wchar_t * input,
size_t length,
const wchar_t * format,
_locale_t locale [, argument_list]
);
Paramètres
input
Chaîne d’entrée à examiner.
length
Nombre de caractères à examiner dans input
.
format
Un ou plusieurs spécificateurs de format.
locale
Paramètres régionaux à utiliser.
argument_list
Arguments facultatifs à attribuer en fonction de la chaîne de format.
Valeur retournée
Ces deux fonctions retournent 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é. La valeur de retour est EOF
en cas d’erreur ou si la fin de la chaîne est atteinte avant la première conversion. Pour plus d’informations, consultez , , swscanf_s
_sscanf_s_l
, _swscanf_s_l
.sscanf_s
Si input
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
.
Pour plus d’informations sur ces codes d’erreur et d’autres codes d’erreur, consultez , , _sys_errlist
_doserrno
et _sys_nerr
.errno
Notes
Cette fonction est semblable sscanf_s
, sauf qu’elle vous permet de spécifier un nombre fixe de caractères à examiner à partir de la chaîne d’entrée. Pour plus d’informations, consultez , , swscanf_s
_sscanf_s_l
, _swscanf_s_l
.sscanf_s
Le paramètre de taille de mémoire tampon est requis avec les caractères de champ de type c, C, s, S et [. Pour plus d’informations, consultez Caractères du champ de type printf.
Remarque
Le paramètre relatif à la taille est de type unsigned
, et non size_t
.
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 routines de texte générique
Routine Tchar.h | _UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_sntscanf_s |
_snscanf_s |
_snscanf_s |
_snwscanf_s |
_sntscanf_s_l |
_snscanf_s_l |
_snscanf_s_l |
_snwscanf_s_l |
Spécifications
Routine | En-tête requis |
---|---|
_snscanf_s , _snscanf_s_l |
<stdio.h> |
_snwscanf_s , _snwscanf_s_l |
<stdio.h> ou <wchar.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// crt_snscanf_s.c
// This example scans a string of
// numbers, using both the character
// and wide character secure versions
// of the snscanf function.
#include <stdio.h>
int main( )
{
char str1[] = "15 12 14...";
wchar_t str2[] = L"15 12 14...";
char s1[3];
wchar_t s2[3];
int i;
float fp;
i = _snscanf_s( str1, 6, "%s %f", s1, 3, &fp);
printf_s("_snscanf_s converted %d fields: ", i);
printf_s("%s and %f\n", s1, fp);
i = _snwscanf_s( str2, 6, L"%s %f", s2, 3, &fp);
wprintf_s(L"_snwscanf_s converted %d fields: ", i);
wprintf_s(L"%s and %f\n", s2, fp);
}
_snscanf_s converted 2 fields: 15 and 12.000000
_snwscanf_s converted 2 fields: 15 and 12.000000