STRTOK(3) NetBSD Library Functions Manual STRTOK(3)
NAME
strtok, strtok_r -- string tokens
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <string.h> char * strtok(char * restrict str, const char * restrict sep); char * strtok_r(char * restrict str, const char * restrict sep, char ** restrict lasts);
DESCRIPTION
The strtok() function is used to isolate sequential tokens in a nul-ter- minated string, str. These tokens are separated in the string by at least one of the characters in sep. The first time that strtok() is called, str should be specified; subsequent calls, wishing to obtain fur- ther tokens from the same string, should pass a null pointer instead. The separator string, sep, must be supplied each time, and may change between calls. The strtok() function returns a pointer to the beginning of each subse- quent token in the string, after replacing the separator character itself with a NUL character. Separator characters at the beginning of the string or at the continuation point are skipped so that zero length tokens are not returned. When no more tokens remain, a null pointer is returned. The strtok_r() function implements the functionality of strtok() but is passed an additional argument, lasts, which points to a user-provided pointer which is used by strtok_r() to store state which needs to be kept between calls to scan the same string; unlike strtok(), it is not neces- sary to limit tokenizing to a single string at a time when using strtok_r().
EXAMPLES
The following will construct an array of pointers to each individual word in the string s: #define MAXTOKENS 128 char s[512], *p, *tokens[MAXTOKENS+1]; char *last; int i = 0; snprintf(s, sizeof(s), "cat dog horse cow"); for ((p = strtok_r(s, " ", &last)); (p != NULL && i < MAXTOKENS); (p = strtok_r(NULL, " ", &last)), i++) { tokens[i] = p; } tokens[i] = NULL; That is, tokens[0] will point to "cat", tokens[1] will point to "dog", tokens[2] will point to "horse", and tokens[3] will point to "cow". If the pointer variable p is not NULL when the loop terminates, there were more than MAXTOKENS words in the input string.
SEE ALSO
index(3), memchr(3), rindex(3), strchr(3), strcspn(3), strpbrk(3), strrchr(3), strsep(3), strspn(3), strstr(3)
STANDARDS
The strtok() function conforms to ANSI X3.159-1989 (``ANSI C89''). The strtok_r() function conforms to IEEE Std 1003.1c-1995 (``POSIX.1''). The restrict keyword was added in ISO/IEC 9899:1999 (``ISO C99'') and IEEE Std 1003.1-2001 (``POSIX.1'').
BUGS
The System V strtok(), if handed a string containing only delimiter char- acters, will not alter the next starting point, so that a call to strtok() with a different (or empty) delimiter string may return a non-NULL value. Since this implementation always alters the next start- ing point, such a sequence of calls would always return NULL. NetBSD 11.99 February 19, 2026 NetBSD 11.99
Powered by man-cgi (2025-09-08). Maintained for NetBSD by Kimmo Suominen. Based on man-cgi by Panagiotis Christias.