sscanf, _sscanf_l, swscanf, _swscanf_l
lisez les données mises en forme d'une chaîne.plus les versions sécurisées de ces fonctions sont disponibles ; consultez sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.
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ètres
buffer
données stockéesformat
Chaîne de format.Pour plus d'informations, consultez Spécifications de format.argument
arguments facultatifslocale
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 lit des données d' buffer à l'emplacement donné par chaque argument.Chaque argument doit être un pointeur vers une variable avec un type qui correspond à un spécificateur de type dans format.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 .Si copier se situe entre les chaînes qui se chevauchent, le comportement n'est pas défini.
Note de sécurité |
---|
en lisant une chaîne avec sscanf, spécifiez toujours une largeur pour le format d' %s (par exemple, "%32s" au lieu d' "%s") ; sinon, l'entrée incorrectement mise en forme peut facilement provoquer un dépassement de mémoire tampon. |
swscanf est une version à caractère élargi d' sscanf; les arguments à swscanf sont des chaînes à caractères larges.sscanfne gère pas les caractères hexadécimaux multioctets.swscanf ne gère pas les caractères pleine chasse zone hexadécimale ou « de » compatibilité Unicode.Sinon, swscanf et sscanf 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 |
sscanf |
sscanf |
swscanf |
_stscanf_l |
_sscanf_l |
_sscanf_l |
_swscanf_l |
Configuration requise
routine |
en-tête requis |
---|---|
sscanf, _sscanf_l |
<stdio.h> |
swscanf, _swscanf_l |
<stdio.h> ou <wchar.h> |
Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.
Exemple
// 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 );
}
Équivalent .NET Framework
Consulter les méthodes d' Parse , telles que System : : double : : analysez.
Voir aussi
Référence
fscanf, _fscanf_l, fwscanf, _fwscanf_l
scanf, _scanf_l, wscanf, _wscanf_l