问题补充说明:请问strtok函数第二个参数,即分隔符参数,试了一下,只能是char *指针,不能用char数组,这是为什么呢?但有的地方却说:“它的第二个参数不能是char*的变量,是char[]的变量则没问题”,有何道理?另外,第一次使用strtok后,再使用:token = strtok(NULL, ",-|");这样的都是同一个char * token定义,就是说每次都会改变token的指向?谢谢!
1、c99中函数定义是:
char*strtok(char*restricts1,constchar*restricts2);
你所谓的那句话有可能是指不可用char*,因为这里定义必须是constchar*,而char[]因为数组的特性,其引用相当于constchar*
比如你定义
c每尔判服植族余属似意新harstr[20]阻着洲序候官氧附食土;
char*p;
那么
p++是有效的,指针引用地址改变了。
str++或是无效的,变相等于360问答了constchar*
2、首次完成对字符串分割后,分隔符会被变成空格,此时如果将第一个参数置NULL即会按顺序返回每个之高未谁象花仍子字符串,每调用一次返回一个空林小凯响今似命亮越,所以token会改变。当后面不再有子字符串了,就会返回NULL
补充:
对,除非你给出的第一个参数不是NULL,这样他会重新开始。