Next: , Previous: , Up: Strings   [Contents][Index]


5.42 strtok, strtok_r, strsep—get next token from a string

Synopsis

#include <string.h>
char *strtok(char *restrict source,
    const char *restrict delimiters);
char *strtok_r(char *restrict source,
    const char *restrict delimiters,
    char **lasts);
char *strsep(char **source_ptr, const char *delimiters);

Description
The strtok function is used to isolate sequential tokens in a null-terminated string, *source. These tokens are delimited in the string by at least one of the characters in *delimiters. The first time that strtok is called, *source should be specified; subsequent calls, wishing to obtain further tokens from the same string, should pass a null pointer instead. The separator string, *delimiters, must be supplied each time and may change between calls.

The strtok function returns a pointer to the beginning of each subsequent token in the string, after replacing the separator character itself with a null character. When no more tokens remain, a null pointer is returned.

The strtok_r function has the same behavior as strtok, except a pointer to placeholder *lasts must be supplied by the caller.

The strsep function is similar in behavior to strtok, except a pointer to the string pointer must be supplied source_ptr and the function does not skip leading delimiters. When the string starts with a delimiter, the delimiter is changed to the null character and the empty string is returned. Like strtok_r and strtok, the *source_ptr is updated to the next character following the last delimiter found or NULL if the end of string is reached with no more delimiters.


Returns
strtok, strtok_r, and strsep all return a pointer to the next token, or NULL if no more tokens can be found. For strsep, a token may be the empty string.


Notes
strtok is unsafe for multi-threaded applications. strtok_r and strsep are thread-safe and should be used instead.


Portability
strtok is ANSI C. strtok_r is POSIX. strsep is a BSD extension.

strtok, strtok_r, and strsep require no supporting OS subroutines.



Next: , Previous: , Up: Strings   [Contents][Index]