C中字符串分割函数strtok的一个坑

时间:2024-01-02 10:00:02

strtok的典型用法是:

 p = strtok(s4, split);
while(p != NULL){
printf("%s\n", p);
p = strtok(NULL, split);
}

 需要注意的是:如果s4是字符串常量,运行这一段代码会报出段错误。因为strtok为了处理方便,会更改字符串s4中的一些字符(将分隔符split更改为'\0'),而字符串常量是不能更改的,所以会报段错误。

第二个需要注意的点是:strtok处理的过程中会更改字符串s4中的一些字符(将分隔符split更改为'\0'),可恶的是,它处理完之后还不会给你再改回来。。。。被strtok强奸后的s4已经废了,千万不要再拿来用了。

 

所以,永远不要用strtok!Do It yourself.