I have a function using strtok like this
void f1(char *name) { ... char *tmp; tmp = strtok(names, \" ,\"); while(tmp) { ... tmp = strtok(NULL, \" ,\"); } ... } <
You say:
And i have a call f1("abc,def");
That call is illegal - strtok modifies its first parameter and you are not allowed to modify string literals. What you get is undefined behaviour - anything could happen. You want:
char a[] = "abc,def"; f1( a );