strtok
, strtok_r
, strsep
—get next token from a string#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.
Portability
strtok
is ANSI C.
strtok_r
is POSIX.
strsep
is a BSD extension.
strtok
, strtok_r
, and strsep
require no supporting OS subroutines.