Linux |
CentOS 4.8 |
|
strtok_r(3) |
strtok, strtok_r − Extraire des mots d’une chaîne. |
#include <string.h> char *strtok (char *s, const char *delim); char *strtok_r (char *s, const char *delim, char **ptrptr); |
Un élément lexical (token) est une chaîne non vide de caractères qui n’appartiennent pas à la chaîne delim, suivie de \0 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 \0 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. |
Ãvitez au maximum d’utiliser cette fonction. Sinon, prenez note des informations suivantes : |
Cette fonction modifie son premier argument. 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(). |
La fonction strtok() renvoie un pointeur sur l’élément lexical suivant, ou NULL s’il n’y en a plus. |
strtok () |
SVID 3, POSIX, BSD 4.3, ISO 9899 |
strtok_r () |
POSIX.1c |
index(3), memchr(3), rindex(3), strchr(3), strpbrk(3), strsep(3), strspn(3), strstr(3) |
Christophe Blaess, 1997. |
strtok_r(3) |