Question

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?

Was it helpful?

Solution

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.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top