COHERENT manpages
This page displays the COHERENT manpage for strtok() [Break a string into tokens].
List of available manpages
Index
strtok() -- String Function (libc)
Break a string into tokens
#include <string.h>
char *strtok(string1, string2)
char *string1, *string2;
strtok() divides a string into a set of tokens. string1 points to the
string to be divided, and string2 points to the character or characters
that delimit the tokens.
strtok() divides a string into tokens by being called repeatedly.
On the first call to strtok(), string1 should point to the string being
divided. strtok() searches for a character that is not included within
string2. If it finds one, then strtok() regards it as the beginning of the
first token within the string. If one cannot be found, then strtok()
returns NULL to signal that the string could not be divided into tokens.
When it finds the beginning of the first token, strtok() then looks for a
character that is included within string2. When it finds one, strtok()
replaces it with NUL to mark the end of the first token, stores a pointer
to the remainder of string1 within a static buffer, and returns the address
of the beginning of the first token.
On subsequent calls to strtok(), pass it NULL instead of string1. strtok()
then looks for subsequent tokens using the address that it saved from the
first time you called it.
Note that with each call to strtok(), string2 may point to a different
delimiter or set of delimiters.
Example
The following example breaks command_string into individual tokens and puts
pointers to the tokens into the array tokenlist[]. It then returns the
number of tokens created. No more than maxtoken tokens will be created.
command_string is modified to place `\0' over token separators. The token
list points into command_string. Tokens are separated by spaces, tabs,
commas, semicolons, and newlines.
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include <stdio.h>
tokenize(command_string, tokenlist, maxtoken)
char *command_string, *tokenlist[]; size_t maxtoken;
{
static char tokensep[]="\t\n ,;";
int tokencount;
char *thistoken;
if(command_string == NULL || !maxtoken)
return 0;
thistoken = strtok(command_string, tokensep);
for(tokencount = 0; tokencount < maxtoken &&
thistoken != NULL;) {
tokenlist[tokencount++] = thistoken;
thistoken = strtok(NULL, tokensep);
}
tokenlist[tokencount] = NULL;
return tokencount;
}
#define MAXTOKEN 100
char *tokens[MAXTOKEN];
char buf[80];
main()
{
for(;;) {
int i, j;
printf("Enter string ");
fflush(stdout);
if(gets(buf) == NULL)
exit(EXIT_SUCCESS);
i = tokenize(buf, tokens, MAXTOKEN);
for (j = 0; j < i; j++)
printf("%s\n", tokens[j]);
}
}
See Also
libc,
string.h
ANSI Standard, §7.11.5.8
POSIX Standard, §8.1