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