strstr()是string.h库里的一个函数,它的效果是传两个字符串地址,在第一个字符串中找第二个字符串。如果存在返回存在第一个字符串中关于第二个字符串的首地址。如果不存在,就返回空指针。
首先需要定义三个指针,s1,s2,p。因为两个字符串不能改变,需要重新定义三个指针来实现,当找到一半或者找到其中几个字符时,需要一个p指针来记录第一个字符串中开始比较的起始位置,下一次遍历时,将p+1赋给s1再一次进行对比,直到全部遍历完第一个字符串,亦或者找到了子字符串。找到时,此时s2指向\0,只需加一个条件,直接结束循环,直接返回p的地址就是所查找子字符串在第一个字符串的起始位置。文章来源:https://www.toymoban.com/news/detail-728303.html
代码实现如下:文章来源地址https://www.toymoban.com/news/detail-728303.html
#include <stdio.h>
#include <string.h>
#include <assert.h>
char* my_strstr(const char* str1, const char* str2) {
assert(str1 && str2);
const char* s1 = str1;
const char* s2 = str2;
const char* p = str1;
while (*p) {
s1 = p;
s2 = str2;
while(*s2!='\0'&&*s1!='\0' &&* s1 == *s2) {
s1++;
s2++;
}
if (*s2 == '\0') {
return p;
}
p++;
}
return NULL;
}
int main() {
char arr1[] = "abbbcdef";
char arr2[] = "bcd";
char*ret=my_strstr(arr1, arr2);
if (ret == NULL) {
printf("没找到\n");
}
else {
printf("%s\n", ret);
}
return 0;
}
到了这里,关于c语言模拟实现strstr函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!