Scroll to navigation

STRTOK(3) Linux Programmer's Manual STRTOK(3)


strtok, strtok_r - extract tokens from strings


#include <string.h>

char *strtok(char *s, const char *delim);

char *strtok_r(char *s, const char *delim, char **ptrptr);


A `token' is a nonempty string of characters not occurring in the string delim, followed by \0 or by a character occurring in delim.

The strtok() function can be used to parse the string s into tokens. The first call to strtok() should have s as its first argument. Subsequent calls should have the first argument set to NULL. Each call returns a pointer to the next token, or NULL when no more tokens are found.

If a token ends with a delimiter, this delimiting character is overwritten with a \0 and a pointer to the next character is saved for the next call to strtok(). The delimiter string delim may be different for each call.

The strtok_r() function works the same as the strtok() function, but instead of using a static buffer it uses a pointer to a user allocated char* pointer. This pointer, the ptrptr parameter, must be the same while parsing the same string.


Never use these functions. If you do, note that:

These functions modify their first argument.

The identity of the delimiting character is lost.

These functions cannot be used on constant strings.

The strtok() function uses a static buffer while parsing, so it's not thread safe. Use strtok_r() if this matters to you.


The strtok() function returns a pointer to the next token, or NULL if there are no more tokens.


SVID 3, POSIX, BSD 4.3, ISO 9899


index(3), memchr(3), rindex(3), strchr(3), strpbrk(3), strsep(3), strspn(3), strstr(3)

February 13, 2000 GNU