strtok_s
, , _strtok_s_l
, _wcstok_s_l
wcstok_s
, , _mbstok_s
_mbstok_s_l
Recherche le prochain jeton dans une chaîne en utilisant les paramètres régionaux actifs ou les paramètres régionaux qui ont été transmis. Ces versions de strtok
, _strtok_l
wcstok
_wcstok_l
, , _mbstok
, ont _mbstok_l
des améliorations de sécurité, comme décrit dans les fonctionnalités de sécurité dans le CRT.
Important
_mbstok_s
et _mbstok_s_l
ne peuvent pas être utilisées dans les applications qui s'exécutent dans Windows Runtime. Pour plus d’informations, consultez Fonctions CRT non prises en charge dans les applications de la plateforme Windows universelle.
Syntaxe
char* strtok_s(
char* str,
const char* delimiters,
char** context
);
char* _strtok_s_l(
char* str,
const char* delimiters,
char** context,
_locale_t locale
);
wchar_t* wcstok_s(
wchar_t* str,
const wchar_t* delimiters,
wchar_t** context
);
wchar_t *_wcstok_s_l(
wchar_t* str,
const wchar_t* delimiters,
wchar_t** context,
_locale_t locale
);
unsigned char* _mbstok_s(
unsigned char* str,
const unsigned char* delimiters,
char** context
);
unsigned char* _mbstok_s_l(
unsigned char* str,
const unsigned char* delimiters,
char** context,
_locale_t locale
);
Paramètres
str
Chaîne contenant le jeton ou les jetons à rechercher.
delimiters
Jeu de caractères délimiteurs à utiliser.
context
Permet de stocker des informations de position entre les appels à la fonction.
locale
Paramètres régionaux à utiliser.
Valeur retournée
Retourne un pointeur désignant le prochain jeton trouvé dans str
. Retourne NULL
quand aucun autre jeton n’est trouvé. Chaque appel modifie str
en remplaçant un caractère Null pour le premier délimiteur qui se produit après le jeton retourné.
Conditions d’erreur
str |
delimiters |
context |
Valeur retournée | errno |
---|---|---|---|---|
NULL |
n'importe laquelle | pointeur vers un pointeur Null | NULL |
EINVAL |
n'importe laquelle | NULL |
tous | NULL |
EINVAL |
tous | n'importe laquelle | NULL |
NULL |
EINVAL |
S’il str
s’agit NULL
d’un context
pointeur de contexte valide, il n’y a pas d’erreur.
Notes
La strtok_s
famille de fonctions recherche le jeton suivant dans str
. Le jeu de caractères dans delimiters
spécifie les délimiteurs possibles du jeton à rechercher dans str
lors de l’appel en cours. wcstok_s
et _mbstok_s
sont des versions à caractères larges et à caractères multioctets de strtok_s
. Les arguments et les valeurs de retour des wcstok_s
_wcstok_s_l
chaînes à caractères larges. Les arguments et les valeurs de retour des _mbstok_s
_mbstok_s_l
chaînes de caractères multioctets. Ces fonctions se comportent sinon de façon identique.
Cette fonction valide ses paramètres. Lorsqu’une condition d’erreur se produit, comme dans la table Conditions d’erreur, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, ces fonctions attribuent à errno
la valeur EINVAL
et retournent NULL
.
Au premier appel de strtok_s
, la fonction ignore les délimiteurs de début et retourne un pointeur désignant le premier jeton dans str
, faisant terminer le jeton par un caractère Null. D’autres jetons peuvent être tirés du reste de str
par une série d’appels à strtok_s
. Chaque appel à strtok_s
modifie str
en insérant un caractère Null après le jeton retourné par cet appel. Le pointeur context
identifie la chaîne qui est actuellement lue, ainsi que l’endroit dans la chaîne où le prochain jeton doit être lu. Pour lire le prochain jeton à partir de str
, appelez strtok_s
en spécifiant une valeur NULL
pour l’argument str
, puis passez le même paramètre context
. L’argument NULL
str
provoque strtok_s
la recherche du jeton suivant dans la modification str
. L’argument delimiters
peut prendre n’importe quelle valeur d’un appel à l’autre, si bien que le jeu de délimiteurs peut varier.
Étant donné que le context
paramètre remplace les mémoires tampons statiques utilisées et strtok
_strtok_l
, il est possible d’analyser deux chaînes simultanément dans le même thread.
La valeur de la sortie est affectée par la valeur du paramètre de la catégorie LC_CTYPE
des paramètres régionaux. Pour plus d’informations, consultez setlocale
.
Les versions de ces fonctions sans suffixe _l
utilisent les paramètres régionaux de thread actuels pour ce comportement dépendant des paramètres régionaux. Les versions avec le _l
suffixe sont identiques, sauf qu’elles utilisent plutôt les paramètres régionaux spécifiés par le locale
paramètre. Pour plus d’informations, consultez Locale.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Mappages de routines de texte générique
Routine TCHAR.H |
_UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tcstok_s |
strtok_s |
_mbstok_s |
wcstok_s |
_tcstok_s_l |
_strtok_s_l |
_mbstok_s_l |
_wcstok_s_l |
Spécifications
Routine | En-tête requis |
---|---|
strtok_s |
<string.h> |
_strtok_s_l |
<string.h> |
wcstok_s ,_wcstok_s_l |
<string.h> ou <wchar.h> |
_mbstok_s ,_mbstok_s_l |
<mbstring.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// crt_strtok_s.c
// In this program, a loop uses strtok_s
// to print all the tokens (separated by commas
// or blanks) in two strings at the same time.
#include <string.h>
#include <stdio.h>
char string1[] =
"A string\tof ,,tokens\nand some more tokens";
char string2[] =
"Another string\n\tparsed at the same time.";
char seps[] = " ,\t\n";
char *token1 = NULL;
char *token2 = NULL;
char *next_token1 = NULL;
char *next_token2 = NULL;
int main(void)
{
printf("Tokens:\n");
// Establish string and get the first token:
token1 = strtok_s(string1, seps, &next_token1);
token2 = strtok_s(string2, seps, &next_token2);
// While there are tokens in "string1" or "string2"
while ((token1 != NULL) || (token2 != NULL))
{
// Get next token:
if (token1 != NULL)
{
printf(" %s\n", token1);
token1 = strtok_s(NULL, seps, &next_token1);
}
if (token2 != NULL)
{
printf(" %s\n", token2);
token2 = strtok_s(NULL, seps, &next_token2);
}
}
}
Tokens:
A
Another
string
string
of
parsed
tokens
at
and
the
some
same
more
time.
tokens
Voir aussi
Manipulation de chaînes
Paramètres régionaux
Interprétation des séquences de caractères multioctets
strcspn
, , wcscspn
_mbscspn
, ,_mbscspn_l
strspn
, , wcsspn
_mbsspn
, ,_mbsspn_l