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日

相关文章

  • 基于malloc与free函数的实现代码及分析

    实现动态内存的分配和释放是C/C++程序中常见的问题。malloc和free函数是C/C++语言的标准库函数,用于动态分配和释放内存。本攻略将详细讲解基于malloc和free函数的动态内存分配和释放的实现方法及分析。 一、malloc函数的实现 在C/C++程序中,动态内存分配的过程通常由malloc函数实现。malloc函数的基本原理是向操作系统请求一定…

    C 2023年5月24日
    00
  • CDay03

    字符类型 编码 char类型采用ASCII编码,占1个字节,只用了7位(最高位是0),能表示128个字符。 需要记忆的: 空字符 ‘\0’ = 0 ‘ ‘ = 32 ‘0’ = 48 ‘A’ = 65 ‘a’ = 97 转义序列 字符转义序列 数字转义序列 八进制:以 \ 开头,后面最多接三个八进制数 十六进制:以 \x 开头,后面接十六进制数 字符处理函数…

    C语言 2023年4月18日
    00
  • QT5连接MySQL实现增删改查

    下面就是QT5连接MySQL实现增删改查的完整攻略。 1. 安装MySQL驱动 在QT5中连接MySQL必须要安装MySQL驱动,你可以从以下链接中下载:https://www.mysql.com/products/connector/ 将下载好的驱动放在QT5安装目录下的plugins/sqldrivers目录下。 2. 配置项目文件 在.pro文件中添加…

    C 2023年5月23日
    00
  • Python与C/C++的相互调用案例

    当我们需要用Python完成一些与底层硬件交互或者需要进行大量数据处理时,往往会面临性能差的问题。这是因为Python作为解释型语言,运行效率较低。在这种情况下,我们可以考虑利用C/C++编写高效的底层代码,并将其与Python进行相互调用,从而实现Python的高效运行。 Python调用C/C++代码 Python可以通过扩展模块的方式调用C/C++代码…

    C 2023年5月23日
    00
  • VS2019中CMake项目如何指定c++语言标准

    对于VS2019中的CMake项目,指定C++语言标准分为以下两种情况: 针对某个特定的C++源文件指定语言标准 针对整个项目指定C++语言标准 以下是详细的操作步骤: 针对某个特定的C++源文件指定语言标准: (1) 在该C++源文件中添加以下语句: #SET(CMAKE_CXX_STANDARD 17) 以上语句的含义就是将这个C++源文件设为使用C++…

    C 2023年5月23日
    00
  • 深入了解C++异常处理

    深入了解C++异常处理 C++异常处理是一种处理程序错误的机制,在代码出现错误时,以一种标准化的方式抛出异常,传递异常信息,然后可以选择在程序的其他部分捕获并处理它们,以便程序可以以一种优雅的方式退出或恢复。在这篇文章中,我们将介绍C++异常处理的基本概念,并提供示例来解释异常的情况。 异常处理的三个基本部分 C++异常处理的三个基本部分是:抛出异常、捕获异…

    C 2023年5月22日
    00
  • C++设置系统时间及系统时间网络更新的方法

    C++设置系统时间及网络更新的方法 1. 设置系统时间 在C++中,可以使用time.h头文件中的time()函数获取当前时间,并使用set_time()函数设置系统时间。具体的代码如下: #include <iostream> #include <ctime> #include <windows.h> using nam…

    C 2023年5月23日
    00
  • 推荐几个不错的console调试技巧实现

    接下来我将详细讲解“推荐几个不错的console调试技巧实现”的完整攻略。 1. 使用console.log输出调试信息 console.log是一个非常常见的调试技巧,它可以在浏览器的控制台输出调试信息。可以用它输出变量、对象、函数等内容,方便我们找到问题所在。 示例代码: let username = ‘John’; console.log(‘当前用户名…

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