例如在s1当中查找s2字符串。我们设置函数,形参分别为str1,str2;设置一个cur指针接受str1,以防str1位置不是初始值,从而返回值失败。再设置s1与s2指针分别指向cur与str2。while(*cur)防止cur往下查找时查找到了\0后停止,也说明了查找失败。while (*s1 == *s2&&*s1!=0&&*s2!=0)当cur++开始等于s2s时,while (*s1 == *s2&&*s1!=0&&*s2!=0),查找直到没有相同字符位置,if (*s2 == 0),若s2不为0,则查找失败,若为0查找成功。
#include<stdio.h>
char* my_strstr(const char* str1, const char* str2)
{
const char* s1 = NULL;
const char* s2 = NULL;
const char* cur = str1;
while (*cur)
{
s1 = cur;
s2 = str2;
while (*s1 == *s2&&*s1!=0&&*s2!=0)
{
s1++;
s2++;
}
//找到时,由于函数类型是char*,返回指针起始位置
if (*s2 == 0)
{
return (char*)cur;
}
cur++;
}
//找不到
return NULL;
}
int main()
{
char arr1[] = "abbbcdefg";
char arr2[] = "bbc";
my_strstr(arr1, arr2);
printf("%s", my_strstr(arr1, arr2));
}