strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l

 

Pour obtenir la dernière documentation sur Visual Studio 2017 RC, consultez Documentation Visual Studio 2017 RC.

Recherche l'unité lexicale suivant dans une chaîne, avec les paramètres régionaux actuels ou des paramètres régionaux spécifiés qui sont passés. Des versions plus sécurisées de ces fonctions sont disponibles ; consultez strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l.

System_CAPS_ICON_important.jpg Important

_mbstok et _mbstok_l ne peuvent pas être utilisée dans les applications qui s'exécutent dans le Windows Runtime. 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 une ou plusieurs unités lexicales.

strDelimit
Ensemble de caractères délimiteurs.

locale
Paramètres régionaux à utiliser.

Retourne un pointeur vers l'unité lexicale suivante trouvée dans strToken. Ils retournent la valeur NULL lorsque plus aucune unité lexicale n'est détectée. Chaque appel change strToken en substituant un caractère NULL pour le premier séparateur qui arrive après l'unité lexicale retournée.

La fonction strtok recherche l'unité lexicale suivante dans strToken. Le jeu de caractères dans strDelimit spécifie les séparateurs possibles de l'unité lexicale à rechercher dans strToken sur l'appel actif. wcstok et _mbstok sont des versions à caractères élargis et à caractères multi-octets de strtok. Les arguments et la valeur de retour de wcstok sont des chaînes à caractères larges ; ceux de _mbstok sont des chaînes de caractères multioctets. Ces trois fonctions se comportent sinon de façon identique.

System_CAPS_ICON_important.jpg Important

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 du système, ce qui provoque une élévation des privilèges injustifiée. Pour plus d'informations, consultez Solutions contre les dépassements de mémoire tampon.

Au premier appel de strtok la fonction ignore les séparateurs initiaux et retourne un pointeur vers la première unité lexicale de strToken, terminant l'unité lexicale avec un caractère Null. Plus d'unités lexicales peuvent être séparées du reste de strToken par une série d'appels à strtok. Chaque appel à strtokchangestrToken en insérant un caractère Null après le token retourné par cet appel. Pour lire l'unité lexicale suivante de strToken, appelez strtok avec une valeur NULL pour l'argument strToken. L'argument strToken NULL force strtok à rechercher l'unité lexicale suivante dans le strTokenmodifié. L'argument strDelimit peut prendre n'importe quelle valeur d'un appel au suivant afin que l'ensemble des séparateurs puisse varier.

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 ; consultez setlocale, pour plus d'informations. Les versions de ces fonctions sans le suffixe _l utilisent les paramètres régionaux pour ce comportement dépendant des paramètres régionaux ; les versions avec le suffixe _l sont identiques, sauf qu'elles utilisent à la place les paramètres régionaux transmis. Pour plus d'informations, consultez Paramètres régionaux.

System_CAPS_ICON_note.jpg Remarque

Chaque fonction utilise une variable statique de thread local pour décomposer la chaîne en unités lexicales. Par conséquent, plusieurs threads peuvent simultanément appeler ces fonctions sans effets indésirables. Toutefois, dans un thread unique, des appels entrelacés à une de ces fonctions risque fortement de 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, soyez conscient d'un risque potentiel en appelant l'une de ces fonctions depuis une boucle où 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 est générée, déclenchant des données endommagées.

Mappages de routines de texte générique

Routine TCHAR.H_UNICODE & _MBCS non définis_MBCS défini_UNICODE défini
_tcstokstrtok_mbstokwcstok
_tcstok_strtok_l_mbstok_l_wcstok_l
RoutineEn-tête requis
strtok<string.h>
wcstok<string.h> ou <wchar.h>
_mbstok, _mbstok_l<mbstring.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité.

// 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  
   }  
}  

Tokens:
A
string
sur
tokens
et
some
more
tokens

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

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

Afficher: