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

本文深入探讨了strtok函数的典型用法及其潜在陷阱,包括处理字符串常量时的段错误问题和处理后字符串s4的状态改变。建议开发者自行实现相关功能以避免使用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.

 

 

转载于:https://www.cnblogs.com/cobbliu/p/3393177.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值