您的位置首页百科词条

strtok函数

问题补充说明:请问strtok函数第二个参数,即分隔符参数,试了一下,只能是char *指针,不能用char数组,这是为什么呢?但有的地方却说:“它的第二个参数不能是char*的变量,是char[]的变量则没问题”,有何道理?另外,第一次使用strtok后,再使用:token = strtok(NULL, ",-|");这样的都是同一个char * token定义,就是说每次都会改变token的指向?谢谢!

strtok函数

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,这样他会重新开始。