一、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=https://www.cnblogs.com/zzao/archive/2023/02/25/=*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;
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/545037.html
標籤:其他
