strcmp,strcat,strstr模拟实现

一、strcmp模拟实现

  • 1.strcmp原理
  • 2.基于其原理进行模拟实现

二、strcat模拟实现

  • 1.strcat原理
  • 2.基于其原理进行模拟实现

三、strstr模拟实现

  • 1.strstr原理
  • 2.基于其原理进行模拟实现

一、1. strcmp原理

strcmp进行字符串比较,将两个字符串进行比较,当src大于dest时,返回大于0的数,等于时返回0,小于时返回小于0的数.

效果如下:
strcmp,strcat,strstr模拟实现

ps:在vs的编译器下,strcmp的比较方式和输出结果为:
当src大于dest时,返回1,等于时返回0,小于时-1.

2.模拟实现strcmp

int my_strcmp(char* src,char* dest)
{
 
  while(*src==*dest){
    if(*src=='\0'){
        return 0;    }
    src++;
    dest++;
}
  return (*src-*dest);

}

ps:比较的是两个相同长度的字符串

vs的库函数实现的strcmp如下:
strcmp,strcat,strstr模拟实现

二、1.strcat原理

将src所指向的字符串追加到dest所指向的字符串末尾。

效果如下:
strcmp,strcat,strstr模拟实现

2.模拟实现strcat

char* my_strcat(char* dest,char* src)
{
  char* bgn=arr1;
  while(*dest)
    {dest++;}
  while((*dest=*src)!='\0')
    {dest++;
     src++;       }
    return bgn;
}

库函数实现的strcat:
strcmp,strcat,strstr模拟实现

三、1.strstr的原理

strstr原理:搜索字符串haystack是否为needle的子字符串。

效果如下:
strcmp,strcat,strstr模拟实现

2.模拟实现strstr

char* my_strstr(const char* hacky,const char* needle){
  const char* str1=NULL;
  const char* str2=NULL;
  const char* cur=hacky;
  if(*needle=='\0')
    {return hacky;}
  while(*cur)
{   str1=cur;
    str2=needle;
    while(*str2&&*str1&&*str1==*str2)
      {str1++;
       str2++;}
      if(str2=='\0')
        {return cur;}
    cur++;
}
    return 0;
}

strcmp,strcat,strstr模拟实现

原文链接:https://www.cnblogs.com/zzao/p/17149142.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:strcmp,strcat,strstr模拟实现 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • 浅谈JSON中stringify 函数、toJosn函数和parse函数

    JSON 是一种文本格式,主要用来作为前后端数据交互的标准格式。在使用 JSON 的时候,经常需要使用 JSON 的三个核心函数:JSON.stringify()、JSON.parse()、toJSON(),这三个函数分别用于将 JavaScript 数据转换为 JSON 字符串或者反向转换,或自定义数据格式。 JSON.stringify() JSON.s…

    C 2023年5月23日
    00
  • vscode插件设置之Golang开发环境配置全过程

    VS Code插件设置之Golang开发环境配置全过程 为什么需要配置Golang开发环境 Golang 是一种高效、可靠、快速和简单的编程语言,适用于Web开发以及云计算领域等。 在进行Golang项目开发时,需要搭建相应的开发环境,其中包括对Golang语言的了解,安装Golang编译器、配置编译器环境等。本文将为大家讲解VS Code插件设置之Gola…

    C 2023年5月23日
    00
  • C语言杨氏矩阵简单实现方法

    C语言杨氏矩阵简单实现方法攻略 简述 杨氏矩阵是一种特殊的二维数组,其可以用来解决查找问题,其特点是每行和每列都是递增的有序序列,在查找时可以利用这个性质,减小查找的时间复杂度。 实现方法 杨氏矩阵的实现可以使用二分查找,通过对矩阵的行和列进行二分查找,从而找到目标元素的位置。 步骤 定义杨氏矩阵的数据结构 C typedef struct { int *d…

    C 2023年5月22日
    00
  • Spring Cloud Gateway全局通用异常处理的实现

    下面我会提供详细的攻略来讲解 “Spring Cloud Gateway全局通用异常处理的实现”。 前置知识要求 在学习 Spring Cloud Gateway 全局通用异常处理之前,需要先熟悉以下知识: Spring Boot Spring Cloud Gateway 如果搞定了前置知识的要求,那么我们现在来讲解具体的实现。 Spring Cloud G…

    C 2023年5月22日
    00
  • 基于C语言实现泛型编程详解

    基于C语言实现泛型编程详解 在C语言中实现泛型编程是一件比较困难的事情,因为C语言本身不支持泛型。但是,有一种叫做泛型指针的技术,在C语言中实现泛型编程成为了可能。 泛型指针 泛型指针是一种特殊的指针类型,它可以指向任何类型的数据。在C语言中,使用void*关键字定义泛型指针。 void* ptr; 泛型指针可以将数据类型定义为一个指针类型。例如: int …

    C 2023年5月23日
    00
  • C++ 设置和获取当前工作路径的实现代码

    一、C++ 获取当前工作路径的实现代码 为了获得当前正在执行程序的工作目录,我们可以使用C++标准库函数getcwd。getcwd可以在头文件unistd.h中找到。它的原型是: char *getcwd(char *buf, size_t size); 该函数返回当前工作路径的字符串指针,buf是一个指向存储路径名的字符数组的指针。size应该是buf的长…

    C 2023年5月23日
    00
  • 从Immutable.js到Redux函数式编程

    从Immutable.js到Redux函数式编程的完整攻略包含以下步骤: 1. 简介 Immutable.js是一个JS库,提供了一组不可变数据结构集合(如List、Map、Set等),可以帮助我们更简洁、高效地处理数据,同时避免出错。而Redux是一个用于JavaScript应用程序的可预测状态容器,可以确保你的应用的行为始终一致且易于测试。借助Immut…

    C 2023年5月22日
    00
  • VSCode 配置C++开发环境的方法步骤

    下面是VSCode配置C++开发环境的详细步骤攻略: 步骤一:安装VSCode和MinGW 如果你还没有安装VSCode和MinGW,那么你需要先去官网下载安装。 VSCode官网:https://code.visualstudio.com/ MinGW官网:http://www.mingw.org/ 步骤二:安装C/C++扩展 打开VSCode,在左侧菜单…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部