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

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.

 

 

posted @ 2013-10-28 21:00  CobbLiu  阅读(9133)  评论(0编辑  收藏  举报