A simple example that shows how to use multiple delimiters and potential improvements in your code. See embedded comments for explanation.
Be warned about the general shortcomings of strtok()
(from manual):
These functions modify their first argument.
These functions cannot be used on constant strings.
The identity of the delimiting byte is lost.
The
strtok()
function uses a static buffer while parsing, so it’s not thread safe. Usestrtok_r()
if this matters to you.
#include <stdio.h> #include<string.h> int main(void) { char input[1024]; char *string[256]; // 1) 3 is dangerously small,256 can hold a while;-) // You may want to dynamically allocate the pointers // in a general, robust case. char delimit[]=" \t\r\n\v\f"; // 2) POSIX whitespace characters int i = 0, j = 0; if(fgets(input, sizeof input, stdin)) // 3) fgets() returns NULL on error. // 4) Better practice to use sizeof // input rather hard-coding size { string[i]=strtok(input,delimit); // 5) Make use of i to be explicit while(string[i]!=NULL) { printf("string [%d]=%s\n",i,string[i]); i++; string[i]=strtok(NULL,delimit); } for (j=0;j<i;j++) printf("%s", string[i]); } return 0; }