Partager via


sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l

lisez les données mises en forme d'une chaîne.Ce sont des versions de sscanf, _sscanf_l, swscanf, _swscanf_l avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du CRT.

int sscanf_s(
   const char *buffer,
   const char *format [,
   argument ] ...
);
int _sscanf_s_l(
   const char *buffer,
   const char *format,
   locale_t locale [,
   argument ] ...
);
int swscanf_s(
   const wchar_t *buffer,
   const wchar_t *format [,
   argument ] ...
);
int _swscanf_s_l(
   const wchar_t *buffer,
   const wchar_t *format,
   locale_t locale [,
   argument ] ...
);

Paramètres

  • buffer
    données stockées

  • format
    Chaîne de format.Pour plus d'informations, consultez Spécifications de format.

  • argument
    arguments facultatifs

  • locale
    Les paramètres régionaux à utiliser

Valeur de retour

Chacune de ces fonctions retourne le nombre de champs avec succès convertis et assignés ; la valeur de retour n'inclut pas les champs qui ont été lus mais non assigné.une valeur de retour de 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 atteint avant la première conversion.

si buffer ou format est un pointeur d' NULL , le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, ces fonctions retournent -1 et errno défini à EINVAL

Pour plus d'informations sur ces éléments et d'autres codes d'erreur, consultez _doserrno, errno, _sys_errlist, et _sys_nerr.

Notes

La fonction d' sscanf_slit des données d' buffer à l'emplacement donné par chaque argument.Les arguments après que la chaîne de format spécifie les pointeurs vers des variables avec un type qui correspond à un spécificateur de type dans format.Contrairement au moins sécuriser la version sscanf, un paramètre de taille de mémoire tampon est requis lors de l'utilisation de les caractères de champ de type c, C, s, Set [.La taille de la mémoire tampon de caractères doit être fournie comme paramètre supplémentaire après chaque mémoire tampon qui le requiert.Pour plus d'informations, consultez scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l et type de caractères scanf de champ.

[!REMARQUE]

le paramètre de taille est de type unsigned, pas size_t.

L'argument d' format contrôle interprétation des champs d'entrée et a le même formulaire et fonction que l'argument d' format pour la fonction d' scanf_s .Si copier se situe entre les chaînes qui se chevauchent, le comportement n'est pas défini.

swscanf_s est une version à caractère élargi d' sscanf_s; que les arguments à swscanf_s sont des chaînes à caractères larges.sscanf_s ne gère pas les caractères hexadécimaux multioctets.swscanf_s ne gère pas les caractères pleine chasse zone hexadécimale ou « de » compatibilité Unicode.Sinon, swscanf_s et sscanf_s se comportent de la même façon.

Les versions de ces fonctions par le suffixe d' _l sont identiques mais elles utilisent le paramètre de paramètres régionaux passé au lieu des paramètres régionaux du thread courant.

mappages de routines de texte générique

routine de TCHAR.H

_MBCS & de _UNICODE non défini

_MBCS défini

_UNICODE défini

_stscanf_s

sscanf_s

sscanf_s

swscanf_s

_stscanf_s_l

_sscanf_s_l

_sscanf_s_l

_swscanf_s_l

Configuration requise

routine

en-tête requis

sscanf_s, _sscanf_s_l

<stdio.h>

swscanf_s, _swscanf_s_l

<stdio.h> ou <wchar.h>

Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.

Exemple

// crt_sscanf_s.c
// This program uses sscanf_s to read data items
// from a string named tokenstring, then displays them.

#include <stdio.h>
#include <stdlib.h>

int main( void )
{
   char  tokenstring[] = "15 12 14...";
   char  s[81];
   char  c;
   int   i;
   float fp;

   // Input various data from tokenstring:
   // max 80 character string plus NULL terminator
   sscanf_s( tokenstring, "%s", s, _countof(s) );
   sscanf_s( tokenstring, "%c", &c, sizeof(char) );
   sscanf_s( tokenstring, "%d", &i );
   sscanf_s( tokenstring, "%f", &fp );

   // Output the data read
   printf_s( "String    = %s\n", s );
   printf_s( "Character = %c\n", c );
   printf_s( "Integer:  = %d\n", i );
   printf_s( "Real:     = %f\n", fp );
}
  

Équivalent .NET Framework

Consulter les méthodes d' Parse , telles que System : : double : : analysez.

Voir aussi

Référence

E/S de flux

fscanf, _fscanf_l, fwscanf, _fwscanf_l

scanf, _scanf_l, wscanf, _wscanf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

_snprintf, _snprintf_l, _snwprintf, _snwprintf_l