虽然strtok的函数原型是
extern char *strtok(char *s, char *delim);
用法:#include
功能:分解字符串为一组标记串。s为要分解的字符串,delim为分隔符字符串。
说明:首次调用时,s必须指向要分解的字符串,随后调用要把s设成NULL。
strtok在s中查找包含在delim中的字符并用NULL('/0')来替换,直到找遍整个字符串。
返回指向下一个标记串。当没有标记串时则返回空字符NULL。
但是如果是下面的用法,则是错误的:
char *s="zgbfg|zlkjksajflasf";
char * p1=strtok(s,"|");
理由是,s字符串指针指向的是一个常数字符串。
而strtok是需要分割字符,并相应的把传入的s进行裁剪,但是由于s指向的是个常数字符串,所以会导致出错。
如果是下面的用法则不会出错。
char s[256]="zgbfg|zlkjksajflasf";
char * p1=strtok(s,"|");
这是s是个字符串数组,第一句话会将字符串赋值给s。而s这个时候是个局部的字符串变量,可以被strtok修改。