8.26日
首先,我们来观察strstr函数的声明定义,它是一个char*类型的函数,所以可以返回数组的地址,其次它里面的参数都是const char*类型,这表示了这两数组是不可以被修改的。
此函数的作用是在第一个数组string中,找出strChaSet数组所出现的位置,并且返回出现位置的坐标,否则返回NULL。
在我们了解完strstr()函数的定义后,接下来我们来自己实现一个自己的my_strstr()函数吧!
下面代码中,while循环里,可以看到,我每循环一次就重新将arr3=arr1,这样做的目的是让arr3来存放arr1地址也就是我们找到,出现的位置,最后返回他。
在第二个while循环里,得确保arr1和arr2的值相等。或者arr2='\0',如果漏掉了这个条件,则程序在arr='\0'的时候就会停止,不会返回出现的地址。
由于我们要返回的arr3是const char*类型,不允许修改或返回,我们只好将它强制转换成char*类型返回。
最后我为什么要arr2=s2呢,因为如果出现s1中只出现s2中的前几个元素,并不满足全等条件,则我们要重新赋值,继续后面的判断。
char* my_strstr(const char* s1,const char* s2){
const char* arr1 = s1;
const char* arr2 = s2;
const char* arr3;
while(*arr1!='\0'){
arr3=arr1;
while(*arr1==*arr2 || *arr2 == '\0'){
if(*arr2=='\0'){
return (char*)arr3;
}
arr1++;
arr2++;
}
arr1++;
arr2 = s2;
}
return NULL;
}
int main()
{
//strcmp
char arr1[]={"abcffgh"};
char arr2[]={"cf"};
printf("%s",my_strstr(arr1,arr2));
return 0;
}