strtok函数
的有关信息介绍如下:问题补充说明:请问strtok函数第二个参数,即分隔符参数,试了一下,只能是char *指针,不能用char数组,这是为什么呢?但有的地方却说:“它的第二个参数不能是char*的变量,是char[]的变量则没问题”,有何道理?另外,第一次使用strtok后,再使用:token = strtok(NULL, ",-|");这样的都是同一个char * token定义,就是说每次都会改变token的指向?谢谢!
1、c99中函数定义是:
char*strtok(char*restricts1,constchar*restricts2);
你所谓的那句话有可能是指不可用char*,因为这里定义必须是constchar*,而char[]因为数组的特性,其引用相当于constchar*
比如你定义
charstr[20];
c360问答har*p;
那么
p++随正眼动第紧明规应前额是有效的,指针引用地址稳改变了。
str++或是无效的,变相等于了constchar*
2、首次完成对字符串分割后,分隔符会被变成空格,此时如果将第一个参数置NULL即取病民判鲁速根节井会按顺序返回每个子字符串,每调用一次返回一个,所以token会改变。当查福细眼速态这由弱后面不再有子字符串了,就会返回NULL
补充:
对,除非你给出的第一个参数不是NULL,这样他会重新开始。