_snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Lit les données d’une longueur spécifiée à partir d’une chaîne au format. Voici les versions de _snscanf, _snscanf_l, _snwscanf, _snwscanf_l avec des améliorations de sécurité comme décrit dans fonctionnalités de sécurité de la bibliothèque CRT.

int __cdecl _snscanf_s(  
   const char * input,  
   size_t length,  
   const char * format,  
   ...  
);  
int __cdecl _snscanf_s_l(  
   const char * input,  
   size_t length,  
   const char * format,  
   locale_t locale,  
   ...  
);  
int __cdecl _snwscanf_s(  
   const wchar_t * input,  
   size_t length,  
   const wchar_t * format,  
   ...  
);  
int __cdecl _snwscanf_s_l(  
   const wchar_t * input,  
   size_t length,  
   const wchar_t * format,  
   locale_t locale,  
   …  
);  

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.

... (optional)
Les variables qui servira à stocker les valeurs extraites de la chaîne d’entrée par les spécificateurs de format dans format.

locale
Paramètres régionaux à utiliser.

Ces deux fonctions retourne le nombre de champs correctement converti et assigné ; la valeur de retour n’inclut pas les champs qui ont été lues mais pas attribués. La valeur de retour 0 indique qu'aucun champ n'a été assigné. La valeur de retour est EOF pour une erreur ou si la fin de la chaîne est atteinte avant la première conversion. Pour plus d’informations, consultez sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.

Si input ou format est un NULL pointeur, le Gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre. 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 les autres codes d’erreur, consultez _doserrno, errno, _sys_errlist et _sys_nerr.

Cette fonction est similaire à sscanf_s , sauf qu’elle offre la possibilité de spécifier un nombre fixe de caractères pour examiner la chaîne d’entrée. Pour plus d’informations, consultez sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.

Le paramètre de taille de mémoire tampon est requis par les caractères de champ de type c, C, s, S, et [. Pour plus d’informations, consultez scanf caractères du champ de Type.

System_CAPS_ICON_note.jpg 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
RoutineEn-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 dans l’introduction.

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

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Spécification de largeur scanf

Afficher: