strtok_s, wcstok_s
Remonter à string.h - Index
Fichier en-tête
string.h, _str.h
Catégorie
Routines de mémoire et de manipulation de chaînes
Prototype
char *strtok_s(char * _RESTRICT __s1, rsize_t * _RESTRICT __s1max, const char * _RESTRICT __s2, char ** _RESTRICT __ptr);
wchar_t *wcstok_s(wchar_t * _RESTRICT __s1, rsize_t * _RESTRICT __s1max, const wchar_t * _RESTRICT __s2, wchar_t ** _RESTRICT __ptr);
Description
Remplace strtok, _mbstok, wcstok en ajoutant des améliorations relatives à la sécurité.
Recherche des tokens dans une chaîne, qui sont séparés par des délimiteurs définis dans une seconde chaîne.
strtok_s considère la chaîne __s1 comme une séquence de zéro, un, ou plusieurs tokens texte, séparés par un ou plusieurs caractères de la chaîne de séparation __s2.
Le premier appel à strtok_s renvoie un pointeur sur le premier caractère du premier token de __s1 et écrit un caractère null dans __s1 suivant immédiatement le token renvoyé. Les appels suivants avec null pour le premier argument fonctionneront à travers la chaîne __s1 de cette façon, jusqu'à ce qu'il ne reste plus de tokens.
La chaîne de séparation __s2 peut être différente d'appel en appel. ptr est utilisé pour pointer sur un char* défini par l'utilisateur afin de stocker les informations nécessaires pour continuer l'analyse des autres tokens dans la même chaîne __s1.
Si une violation de contrainte d'exécution se produit, strtok_s n'effectue pas d'indirection à travers les pointeurs __s1 ou __s2 et ne stocke les valeurs sur lesquelles ptr pointe.
Remarque : Les appels à strtok_s ne peuvent pas être imbriqués avec un appel de fonction qui utilise aussi strtok_s. Si vous le faites, vous obtenez une boucle infinie.
Valeur renvoyée
strtok_s renvoie un pointeur sur le premier token trouvé dans __s1. Un pointeur NULL est renvoyé quand il n'y a plus de tokens ou en présence d'une violation de contrainte d'exécution.
Exemple
#include <string.h> #include <stdio.h> int main(void) { unsigned int s1max = 16; char input[16] = "abc,d"; char *p; char *ptr = " "; /* strtok places a NULL terminator in front of the token, if found */ p = strtok_s(input, &s1max, ",", &ptr); if (p) printf("%s\n", p); /* A second call to strtok using NULL as the first parameter returns a pointer to the character following the token */ p = strtok_s(NULL, &s1max, ",", &ptr); if (p) printf("%s\n", p); return 0; }
Portabilité
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
strtok_s |
+ |
+ |
+ |
+ |
wcstok_s |
+ |
+ |
+ |