Partager via


_snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l

Lit les données formatées d'une taille spécifiée dans une chaine. Il s'agit de versions de _snscanf, _snscanf_l, _snwscanf, _snwscanf_l avec des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le 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 à vérifier.

  • length
    Nombre de caractères à examiner dans input.

  • format
    Un ou plusieurs spécificateurs de format.

  • ... (optional)
    Les variables utilisées pour 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.

Valeur de retour

Chacune de ces fonctions retourne le nombre de champs qui sont correctement convertis et assignés ; la valeur de retour n'inclut pas les champs qui ont été lus mais non assigné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 pointeur NULL, le gestionnaire de paramètres non valides 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 ces éléments et autres codes d'erreur, consultez _doserrno, errno, _sys_errlist et _sys_nerr.

Notes

Cette fonction est semblable à sscanf_s sauf qu'elle permet de spécifier un nombre fixe de caractères à examiner depuis 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 avec les caractères de champ de type c, C, s, S, et [. Pour plus d'informations, consultez Caractères du champ de type scanf.

Notes

Le paramètre size est de type unsigned, et non du type 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

Configuration requise

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 Compatibilité dans l'introduction.

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);
}
  

Équivalent .NET Framework

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

Voir aussi

Référence

Spécification de largeur scanf