c99中函数定义是:char * strtok(char * restrict s1, const char * restrict s2);
第一个参数为要被分割的字符串, 第二个是分割符(必须是字符串)。
第二次调用如果将第一个参数设置为NULL即会按顺序返回每个子字符串,每调用一次返回一个,没有字符串则返回NULL。如果第一个参数不是NULL则从新开始。
第一个参数不能是以下形式:
char *str1 = "lsjflsafls";
或是直接传"lsjflsafls";
因为第一个参数是会被修改的(注意原型中没有const),因此不能传常量字符串,可以先申请一块空间存放要比较的字符串。
以下是被我稍微修改过的源码,在gcc下编译通过。
/* 注意string前没有加const */
char *mystrtok(char * string, const char * control)