设为首页 加入收藏

TOP

strcmp,strcat,strstr模拟实现
2023-07-23 13:29:05 】 浏览:25
Tags:strcmp strcat strstr

一、strcmp模拟实现

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

二、strcat模拟实现

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

三、strstr模拟实现

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

一、1. strcmp原理

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

效果如下:

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如下:

二、1.strcat原理

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

效果如下:

2.模拟实现strcat

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

库函数实现的strcat:

三、1.strstr的原理

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

效果如下:

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;
}

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇你想知道的do{...}while(0)的作用.. 下一篇位操作运算

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目