strtok_s, wcstok_s

De RAD Studio
Aller à : navigation, rechercher

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

+

+

+

Voir aussi