首页 > 其他分享 >C学习笔记:自己写的函数实现strtok函数的功能

C学习笔记:自己写的函数实现strtok函数的功能

时间:2022-08-24 04:33:08浏览次数:68  
标签:函数 sep strtok 笔记 char flag strcpy NULL 指针

int sign(char* str,char* sep)//遍历寻找符合的符号
{
    while (*sep)//遍历sep字符数组的符号
    {
        if (*sep == *str)
             return 1; //符合条件返回1,也可以写成布尔函数
         sep++;
     }
     return 0;
}
char* my_strtok(char* strcpy, char* sep)
{    
     static char* p = NULL;
     int flag = 1; //立个flag方便记录分割后有效内容字符的首地址
     char* temp = NULL;//申请个返回的指针变量temp
     if (strcpy == NULL)
         strcpy = p;//如果传过来的指针是空,设strcpy指针为静态指针p指向后面记录'\0'的指针地址
     while (strcpy)//开始遍历内容
     {
         if (sign(strcpy,sep))//如果sign函数返回值是1找到sep包含的符号
         {
             p = strcpy;   //静态指针记录找到的sep符号的地址
             *strcpy = NULL; //把符号设空指针即为'\0';    
         }
         if (*strcpy&&flag) //*strcpy不是NULL说明找到分割字符后字符的首元素地址并记录
         {
             temp = strcpy;
             flag = 0;
         }
         if (!isprint(*strcpy) && !(*strcpy) && flag==0)//如果strcpy不是符号&&strcpy包含内容&&flag=0时说明找到temp的地址(不包含sep的符号)
             return temp;//返回地址
         strcpy++;
     }
 }
int main()
{
     char str[] = "....2..@@[email protected]@com";
     char* sep = ".@";
     char cpy[1000] = {0}; 
     strcpy(cpy, str); //分割会破坏源字符串,拷贝一份
     char* ret = NULL;
     for(ret = strtok(cpy,sep); ret != NULL; ret = strtok(NULL, sep))//循环打印测试
     {
         printf("%s\n", ret);
     }
     return 0;
}

 

标签:函数,sep,strtok,笔记,char,flag,strcpy,NULL,指针
From: https://www.cnblogs.com/godex/p/16618468.html

相关文章

  • js 实现 sum 函数无限累加
    //无限累加sum//一共做两件事://1.调用一次返回当前计算函数本身,该函数主要作用之一为合并多次调用传的不同数量的参数//2.给返回的函数增加valueOf最终计算结......
  • excel 公式 函数
    公式手写函数文字要用双引号定义名称修改函数点击文字点击fx就会弹出对话框countifs查数datedify求两个日期间年数m月数d天数也可以用year函数代替i......
  • HCIA学习笔记二十:STP生成树的配置
    一、STP生成树种类• 华为交换机在出厂的时候,实际已经启用了生成树,默认的生成树为MSTP:[SW1]displaystp• 查看支持多少种生成树:[SW1]stpmode?二、标准生成......
  • 随机函数变换示例
    随机函数变换示例作者:Grey原文地址:随机函数变换示例说明本示例中基于Java,其他语言也有类似的API解决的问题问题1Java中Math.random()函数是等概率返回区间[0......
  • C++ 函数重载
    1.C++可以使用同名函数[重载函数]实现功能类似的多个不同函数,C语言不支持函数重载;2.函数名重载即函数名相同,但是,函数的参数(形参)绝不相同:1)参数个数不同;2)或参数的类......
  • ASP.NET-WebForm动态网站开发技术(学习笔记)一
    ASP.NET-WebForm动态网站开发技术ASP开发概述静态网页与服务器技术 静态网页 以.html或.htm结尾的网页只能单纯的显示文本和图像 无法和用户交互,无法根据用户的......
  • 文件包含漏洞笔记
    漏洞简介程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,则无须再次编写,这种调用文件的过程一般称为文件包含。如果包含的文件参数是......
  • JS基础:数组、函数、对象
    字符串要用英文双引号括起来。字符串与其他类型数据之间用加号+连接起来//--------------------------------------------------------JS中定义声明变量是用关键字var,J......
  • MAVEN学习笔记(二) IDEA中使用Maven
    IDEA中使用Maven在IDEA中配置MAVEN路径文件---->设置---->构建、执行、部署---->构建工具---->Maven找到主路径、用户设置文件、本地仓库并修改 继续在Maven下找到运......
  • 2022-08-23 第五小组 罗佳明 学习笔记
    一、学习重点二、学习内容例题一<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"conten......