strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l

Recherchez le premier jeton dans une chaîne, à l'aide de les paramètres régionaux ou des paramètres régionaux spécifiés passés.Les versions sécurisées de ces fonctions sont disponibles ; consultez strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l.

Important

_mbstok et _mbstok_l ne peuvent pas être utilisés dans les applications qui s'exécutent dans les fenêtres d'exécution.Pour plus d'informations, consultez Fonctions CRT non prises en charge avec /ZW.

char *strtok(
   char *strToken,
   const char *strDelimit 
);
wchar_t *wcstok(
   wchar_t *strToken,
   const wchar_t *strDelimit 
);
unsigned char *_mbstok(
   unsigned char*strToken,
   const unsigned char *strDelimit 
);
unsigned char *_mbstok(
   unsigned char*strToken,
   const unsigned char *strDelimit,
   _locale_t locale
);

Paramètres

  • strToken
    Chaîne contenant le jeton ou les jetons.

  • strDelimit
    Jeu de caractères délimiteurs.

  • locale
    Paramètres régionaux à utiliser.

Valeur de retour

Retourne un pointeur vers le jeton trouvé dans strToken.Ils retournent NULL lorsque plus de jetons ne sont trouvés.Chaque appel modifie strToken en substituant un caractère d' NULL pour le premier séparateur qui se produit après le jeton retourné.

Notes

La fonction d' strtok recherche le premier jeton dans strToken.Le jeu de caractères dans strDelimit spécifie les séparateurs possibles du jeton à rechercher dans strToken sous l'appel actif.wcstok et _mbstok sont à caractères larges et des versions à caractères multioctets d' strtok.Les arguments et la valeur de retour d' wcstok sont des chaînes à caractères larges ; ces d' _mbstok sont des chaînes de caractères multioctets.Ces trois fonctions se comportent de sinon.

Note de sécuritéNote de sécurité

Ces fonctions entraînent un risque potentiel provoqué par un dépassement de mémoire tampon.Les dépassements de mémoire tampon sont une méthode fréquente d'attaque de système, ce qui provoque une élévation de privilège injustifiée.Pour plus d'informations, consultez l' Solutions contre les dépassements de mémoire tampon.

Au premier appel à strtok, la fonction ignore de clés délimiteurs et retourne un pointeur vers le premier jeton dans strToken, en terminant le jeton à un caractère Null.Plus de jetons peuvent être éclatés du reste de strToken par une série d'appels à strtok.Chaque appel à strtokmodifie strToken en insérant un caractère NULL après token retourné par l'appel.Pour lire le premier jeton d' strToken, appelez strtok avec une valeur d' NULL de l'argument d' strToken .L'argument d' NULLstrToken fait rechercher strtok le premier jeton dans strTokenmodifié.L'argument d' strDelimit peut prendre toute valeur d'un appel à la suivante afin que l'ensemble des séparateurs peut varier.

La valeur de sortie est affectée par la configuration de la définition de catégorie d' LC_CTYPE des paramètres régionaux ; consultez l' setlocale pour plus d'informations.Les versions de ces fonctions sans suffixe d' _l utilisent les paramètres régionaux définis pour ce comportement dépendant des paramètres régionaux ; les versions avec le suffixe d' _l sont identiques sauf qu'elles utilisent le paramètre de paramètres régionaux passé à la place.Pour plus d'informations, consultez Paramètres régionaux.

[!REMARQUE]

Chaque fonction utilise une variable statique de thread- local pour analyser la chaîne dans des jetons.Par conséquent, plusieurs threads peuvent simultanément appeler ces fonctions sans effets indésirables.Toutefois, dans un thread unique, entrelaçant des appels à un de ces fonctions est fortement pour produire des données endommagées et des résultats inexacts.En analysant différentes chaînes, terminez d'analyser une chaîne avant de commencer à analyser la suivante.En outre, sachez du risque pour le risque en appelant l'une de ces fonctions d'une boucle dans laquelle une autre fonction est appelée.Si l'autre fonction se termine avec l'une de ces fonctions, une séquence entrelacée d'appels résultera, déclenchant des données endommagées.

Mappages de routines de texte générique

Routine de TCHAR.H

_UNICODE et non définis _MBCS

_MBCS défini

_UNICODE défini

_tcstok

strtok

_mbstok

wcstok

_tcstok

_strtok_l

_mbstok_l

_wcstok_l

Configuration requise

Routine

En-tête requis

strtok

<string.h>

wcstok

<string.h> ou <wchar.h>

_mbstok, _mbstok_l

<mbstring.h>

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

Exemple

// crt_strtok.c
// compile with: /W3
// In this program, a loop uses strtok
// to print all the tokens (separated by commas
// or blanks) in the string named "string".
//
#include <string.h>
#include <stdio.h>

char string[] = "A string\tof ,,tokens\nand some  more tokens";
char seps[]   = " ,\t\n";
char *token;

int main( void )
{
   printf( "Tokens:\n" );
 
   // Establish string and get the first token:
   token = strtok( string, seps ); // C4996
   // Note: strtok is deprecated; consider using strtok_s instead
   while( token != NULL )
   {
      // While there are tokens in "string"
      printf( " %s\n", token );

      // Get next token: 
      token = strtok( NULL, seps ); // C4996
   }
}
  

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' Exemples d'appel de code non managé.

Voir aussi

Référence

Manipulation de chaînes (CRT)

Paramètres régionaux

Interprétation des séquences de caractères multioctets

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l