strtok_s
, _strtok_s_l
, wcstok_s
, _wcstok_s_l
, _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 de l’erreur
str |
delimiters |
context |
Valeur retournée | errno |
---|---|---|---|---|
NULL |
tous | pointeur vers un pointeur Null | NULL |
EINVAL |
tous | NULL |
tous | NULL |
EINVAL |
tous | tous | 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 str
NULL
contraint strtok_s
à rechercher le prochain jeton dans le str
modifié. 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 sortie est affectée par le paramètre de 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 routine de texte générique
TCHAR.H Routine |
_UNICODE et _MBCS non défini |
_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îne
Paramètres régionaux
Interprétation des séquences de caractères multioctets
strcspn
, wcscspn
, _mbscspn
, _mbscspn_l
strspn
, wcsspn
, _mbsspn
, _mbsspn_l
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour