zion - strtok
Nom
strtok, strtok_r - Extraire des mots d'une chaîne.
Résumé
.nf #include <string.h> char *strtok (char * s , const char * delim ); char *strtok_r (char * s , const char * delim , char ** ptrptr); .fi
Description
Un élément lexical (token) est une chaîne non vide de caractères qui n'appartiennent pas à la chaîne delim, suivie de e0 ou d'un caractère appartenant à delim.
La fonction strtok() peut être utilisée pour scinder s en éléments lexicaux. Le premier appel à strtok() doit fournir s comme premier argument. Les appels ultérieurs doivent fournir NULL comme premier argument. Chaque appel renvoie un pointeur sur l'élément lexical suivant, ou NULL quand il n'y en a plus.
Si un token se termine par un délimiteur, le caractère de délimitation est surchargé par un e0 et un pointeur sur le caractère suivant est mémorisé pour l'appel suivant à strtok(). La chaîne de séparateurs delim peut être différente à chaque appel.
La fonction strtok_r () est identique à strtok () mais au lieu d'utiliser un buffer statique, elle emploie un pointeur sur un buffer "char *" alloué par l'utilisateur. Ce pointeur transmis comme paramètre ptrptr doit être toujours le même durant l'analyse d'une chaîne.
Bugs
Évitez au maximum d'utiliser cette fonction. Sinon, prenez note des informations suivantes :
[table][row]
Les caractères de séparation sont surchargés, leur identité est donc perdue.
Cette fonction ne doit pas être invoquée sur une chaîne constante.
La fonction strtok () utilise un buffer statique et n'est donc pas sûre dans un contexte multithread. Dans ce cas il vaut mieux utiliser strtok_r ().
Valeur renvoyée
La fonction strtok() renvoie un pointeur sur l'élément lexical suivant, ou NULL s'il n'y en a plus.
Conformité
strtok () SVID 3, POSIX, BSD 4.3, ISO 9899 |
strtok_r () POSIX.1c |
Voir aussi
index (3), memchr (3), rindex (3), strchr (3), strpbrk (3), strsep (3), strspn (3), strstr (3)
Traduction
Christophe Blaess, 1996-2003.
Poster un commentaire