strstr是查找一个字符串是否在另外一个字符串;如果没有返回NULL
如果有
下面一个例子:
实现思路:
先声明三个变量s1 s2 cur ;s1与s2每个字符串比较,而cur记住是s1开始比较的位置
例子:char arr1[] = "aaabcef";开始查找 当s1指向第三个时发现并没找到,那么下次查找
char arr2[] = "aabc"; s1会从第二个a开始查找;那么cur++后就是s1第二次查找开 始 的位置。那个就可以:
#include<stdio.h>
#include<string.h>
#include<assert.h>char* my_strstr(const char* p1, const char* p2)
{
assert(p1 && p2);
char* s1 = p1;
char* s2 = p2;
char* cur = p1;
while (*cur != '\0')
{
s1 = cur;
s2 = p2;
//查找,如果相等就查找下一个
while (*s1 == *s2 && *s1 && *s2)//*s1 与*s2不为'\0'时进来。
{
s1++;
s2++;
if (*s2 == 0)//找到时。
return cur;
}
//如果不相等cur++。
cur++;
}
//找不到。
return NULL;
}这样实现。
当然上面的代码还有不足,改后
#include<stdio.h> #include<string.h> #include<assert.h> char* my_strstr(const char* p1, const char* p2) { assert(p1 && p2); const char* s1 = p1; const char* s2 = p2; const char* cur = p1; while (*cur != '\0') { s1 = cur; s2 = p2; //查找,如果相等就查找下一个 while (*s1 == *s2 && *s1 && *s2)//*s1 与*s2不为'\0'时进来。 { s1++; s2++; if (*s2 == 0)//找到时。 return (char*)cur; } //如果不相等cur++。 cur++; } //找不到。 return NULL; }
strstr模拟实现
最新推荐文章于 2023-09-08 11:17:13 发布