EP13:奇葩的函数strtok(c语言学习笔记)

目录

总结:


函数参数:char * strtok ( char * str, const char * delimiters );

函数的作用:将字符串以自定义的字符为节点将字符串切开.

函数的使用

int main()
{
    char arr1[] = "cai@163.com";
    char arr2[30] = { 0 };
    strcpy(arr2, arr1);
    const char* p = "@.";//用于去切割字符串

    char*s = NULL;//声明一个字符指针变量,用于存储在for循环中每次循环中所切出来的字符串,为了避免其成为野指针,所以将它的初始值设定为NULL
    for (s = strtok(arr2, p); s != NULL; s = strtok(NULL, p))//所以这个函数就是拿NULL当个存档点了
        (初始化)//第一次直接从头开始  
        //这个s = strtok(arr2, p)就是用p去切割最初的的arr2 然后赋值给s

        (判定)//然后判定到后面不是NULL的话就继续进行 并且用NULL打个存档点 下一次循环的时候就从这个上一次循环生成的存档点开始(这个NULL存储的实际上是上一次切割完成后的字符串)

        (调整)//s = strtok(NULL, p)和s = strtok(arr2, p)同理 就是用p先找到上一次的存档点NULL,然后从这个存档点向后继续找下一个标记点并且继续分解字符串
    {
        printf("%s\n", s );
    }
    return 0;
 }

总结:

设定一个char型字符串数组将操作对象复制一份

设定一个指针(p)用于去定位并且切割字符串

设定一个指针(s)用于去存储每阶段切出来的字符串

NULL的作用 ,一方面是用来判定要不要继续这个循环,更重要的另一个方面就是为指针p做一个存档点,让指针p知道下一次从哪里开始继续进行对字符串的切割

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值