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