Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Strtok to separate all whitespace

Tags:

c

string

strtok

I'm trying to split a string at spaces and tabs.

char * token = strtok(input, " \t");

works only for spaces. What am I doing wrong?

like image 808
Haskell Avatar asked Dec 19 '22 21:12

Haskell


1 Answers

Here is an example that illustrates that strtok() will work on tabs or spaces. The key is to pass in NULL on the all but the first call to strtok().

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
    char buffer[1024];
    int rv = sprintf(buffer, "a string\ttokenize.");
    char *token = strtok(buffer, " \t");
    int i = 0;
    printf("cnt  token\n");
    printf("==========\n");
    while (token) {
        printf("%2d %s\n", i++, token);
        token = strtok(NULL, " \t");
    }
    return 0;
}

output from above program is as follows below.

cnt  token
==========
 0 a
 1 string
 2 tokenize.
like image 54
Mark Hendrickson Avatar answered Dec 24 '22 02:12

Mark Hendrickson