char *strsplit(const char *str, char splitchar, int token_num) { char delimeter[2]; delimeter[0] = splitchar; delimeter[1] = '\0'; int i; char *token = str; for (i = 0; *token; i++) { /* search for delimiters */ size_t len = strcspn(token, delimeter); /* print the found text: use *.* in format to specify a maximum print size */ if (i == token_num) return token; /* advance pointer by one more than the length of the found text */ token += len + 1; } } int main() { printf("token 0: %s\n", strsplit("/asdf/meow/moo", '/', 0)); printf("token 1: %s\n", strsplit("/asdf/meow/moo", '/', 1)); printf("token 2: %s\n", strsplit("/asdf/meow/moo", '/', 2)); } mike@thiscomputer:~$ ./a.out token 0: /asdf/meow/moo token 1: asdf/meow/moo token 2: meow/moo