Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tokenizing strings in C

Tags:

c

string

tokenize

I have been trying to tokenize a string using SPACE as delimiter but it doesn't work. Does any one have suggestion on why it doesn't work?

Edit: tokenizing using:

strtok(string, " ");

The code is like the following

pch = strtok (str," ");
while (pch != NULL)
{
  printf ("%s\n",pch);
  pch = strtok (NULL, " ");
}
like image 599
kombo Avatar asked Sep 10 '25 14:09

kombo


2 Answers

Do it like this:

char s[256];
strcpy(s, "one two three");
char* token = strtok(s, " ");
while (token) {
    printf("token: %s\n", token);
    token = strtok(NULL, " ");
}

Note: strtok modifies the string its tokenising, so it cannot be a const char*.

like image 132
gbjbaanb Avatar answered Sep 12 '25 05:09

gbjbaanb


Here's an example of strtok usage, keep in mind that strtok is destructive of its input string (and therefore can't ever be used on a string constant

char *p = strtok(str, " ");
while(p != NULL) {
    printf("%s\n", p);
    p = strtok(NULL, " ");
}

Basically the thing to note is that passing a NULL as the first parameter to strtok tells it to get the next token from the string it was previously tokenizing.

like image 31
Evan Teran Avatar answered Sep 12 '25 03:09

Evan Teran