sscanf, _sscanf_l, swscanf, _swscanf_lsscanf, _sscanf_l, swscanf, _swscanf_l

Lisent les données mises en forme d’une chaîne.Read formatted data from a string. Il existe des versions plus sécurisées de ces fonctions. Consultez sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.More secure versions of these functions are available; see sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.

SyntaxeSyntax

int sscanf(
   const char *buffer,
   const char *format [,
   argument ] ...
);
int _sscanf_l(
   const char *buffer,
   const char *format,
   locale_t locale [,
   argument ] ...
);
int swscanf(
   const wchar_t *buffer,
   const wchar_t *format [,
   argument ] ...
);
int _swscanf_l(
   const wchar_t *buffer,
   const wchar_t *format,
   locale_t locale [,
   argument ] ...
);

ParamètresParameters

bufferbuffer
Données stockéesStored data

formatformat
Chaîne de contrôle de format.Format-control string. Pour plus d'informations, consultez Spécifications de format.For more information, see Format Specifications.

argumentargument
Arguments facultatifsOptional arguments

localelocale
Paramètres régionaux à utiliserThe locale to use

Valeur de retourReturn Value

Chacune de ces fonctions retourne le nombre de champs correctement convertis et assignés. La valeur de retour n’inclut pas les champs qui ont été lus, mais pas assignés.Each of these functions returns the number of fields successfully converted and assigned; the return value does not include fields that were read but not assigned. La valeur de retour 0 indique qu'aucun champ n'a été assigné.A return value of 0 indicates that no fields were assigned. La valeur de retour est EOF pour une erreur ou si la fin de la chaîne est atteinte avant la première conversion.The return value is EOF for an error or if the end of the string is reached before the first conversion.

Si la mémoire tampon ou le format est un pointeur null , le gestionnaire de paramètres non valides est appelé, comme décrit dans validation de paramètre.If buffer or format is a NULL pointer, the invalid parameter handler is invoked, as described in Parameter Validation. Si l’exécution est autorisée à se poursuivre, ces fonctions retournent-1 et attribuent à errno la valeur EINVAL.If execution is allowed to continue, these functions return -1 and set errno to EINVAL.

Pour plus d’informations sur ces codes d’erreur et les autres, consultez _doserrno, errno, _sys_errlist et _sys_nerr.For information on these and other error codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.

NotesRemarks

La fonction sscanf lit les données de la mémoire tampon dans l’emplacement donné par chaque argument.The sscanf function reads data from buffer into the location given by each argument. Chaque argument doit être un pointeur vers une variable dont le type correspond à un spécificateur de type au format.Every argument must be a pointer to a variable with a type that corresponds to a type specifier in format. L’argument format contrôle l’interprétation des champs d’entrée et a les mêmes forme et fonction que l’argument format pour la fonction scanf .The format argument controls the interpretation of the input fields and has the same form and function as the format argument for the scanf function. Si la copie se produit entre des chaînes qui se chevauchent, le comportement est indéfini.If copying takes place between strings that overlap, the behavior is undefined.

Pour plus d’informations sur les caractères du champ de type scanf, consultez caractères du champ de type scanf.For information about scanf type field characters, see scanf Type Field Characters. Pour plus d’informations sur les champs de spécification de format scanf, consultez champs de spécification de format.For information about scanf format specification fields, see Format Specification Fields.

Important

Lors de la lecture d’une chaîne avec sscanf, spécifiez toujours une largeur pour le format % s (par exemple, « % 32s » au lieu de « % s » ); dans le cas contraire, une entrée mal mise en forme peut facilement provoquer un dépassement de mémoire tampon.When reading a string with sscanf, always specify a width for the %s format (for example, "%32s" instead of "%s"); otherwise, improperly formatted input can easily cause a buffer overrun.

swscanf est une version à caractères larges de sscanf; les arguments de swscanf sont des chaînes à caractères larges.swscanf is a wide-character version of sscanf; the arguments to swscanf are wide-character strings. sscanf ne gère pas les caractères hexadécimaux multioctets.sscanf does not handle multibyte hexadecimal characters. swscanf ne gère pas les caractères hexadécimaux ou « zone de compatibilité » Unicode à pleine chasse.swscanf does not handle Unicode full-width hexadecimal or "compatibility zone" characters. Sinon, swscanf et sscanf se comportent de la même façon.Otherwise, swscanf and sscanf behave identically.

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.The versions of these functions with the _l suffix are identical except that they use the locale parameter passed in instead of the current thread locale.

Mappages de routines de texte génériqueGeneric-Text Routine Mappings

Routine TCHAR.HTCHAR.H routine _UNICODE et _MBCS non définis_UNICODE & _MBCS not defined _MBCS défini_MBCS defined _UNICODE défini_UNICODE defined
_stscanf_stscanf sscanfsscanf sscanfsscanf swscanfswscanf
_stscanf_l_stscanf_l _sscanf_l_sscanf_l _sscanf_l_sscanf_l _swscanf_l_swscanf_l

Configuration requiseRequirements

RoutineRoutine En-tête requisRequired header
sscanf, _sscanf_lsscanf, _sscanf_l <stdio.h><stdio.h>
swscanf, _swscanf_lswscanf, _swscanf_l <stdio.h> ou <wchar.h><stdio.h> or <wchar.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité.For additional compatibility information, see Compatibility.

ExemplesExample

// crt_sscanf.c
// compile with: /W3
// This program uses sscanf to read data items
// from a string named tokenstring, then displays them.

#include <stdio.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:
   sscanf( tokenstring, "%80s", s ); // C4996
   sscanf( tokenstring, "%c", &c );  // C4996
   sscanf( tokenstring, "%d", &i );  // C4996
   sscanf( tokenstring, "%f", &fp ); // C4996
   // Note: sscanf is deprecated; consider using sscanf_s instead

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

Voir aussiSee also

E/S de fluxStream I/O
fscanf, _fscanf_l, fwscanf, _fwscanf_lfscanf, _fscanf_l, fwscanf, _fwscanf_l
scanf, _scanf_l, wscanf, _wscanf_lscanf, _scanf_l, wscanf, _wscanf_l
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_lsprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
snprintf, _snprintf, _snprintf_l, _snwprintf, _snwprintf_lsnprintf, _snprintf, _snprintf_l, _snwprintf, _snwprintf_l