Break a string into substrings, or tokens, by inserting null characters in place of specified delimiters.
Include
<string.h>
Prototype
char *strtok(char *s1, const char *s2);
Arguments
s1
s2
Return Value
Returns a pointer to the first character of a token (the first character in
s1
that does not appear in the set of characters of
s2
). If no token is found, the null pointer is returned.
Remarks
A sequence of calls to this function can be used to split up a string into
substrings (or tokens) by replacing specified characters with null characters. The first
time this function is invoked on a particular string, that string should be passed in
s1
. After the first time, this function can continue parsing the
string from the last delimiter by invoking it with a null value passed in
s1
.
It skips all leading characters that appear in the string s2
(delimiters), then skips all characters not appearing in s2
(this
segment of characters is the token), and then overwrites the next character with a null
character, terminating the current token. The function, strtok
, then
saves a pointer to the character that follows, from which the next search will start. If
strtok
finds the end of the string before it finds a delimiter, the
current token extends to the end of the string pointed to by s1
. If
this is the first call to strtok
, it does not modify the string (no
null characters are written to s1
). The set of characters that is
passed in s2
need not be the same for each call to
strtok
.
If strtok
is called with a non-null parameter for
s1
after the initial call, the string becomes the new string to
search. The old string previously searched will be lost.
Example
#include <string.h>
#include <stdio.h>
int main(void)
{
char str1[30] = "Here, on top of the world!";
char delim[5] = ", .";
char *word;
int x;
printf("str1 : %s\n", str1);
x = 1;
word = strtok(str1,delim);
while (word != NULL)
{
printf("word %d: %s\n", x++, word);
word = strtok(NULL, delim);
}
}
Example Output
str1 : Here, on top of the world!
word 1: Here
word 2: on
word 3: top
word 4: of
word 5: the
word 6: world!