strstr函数介绍
-
strstr函数用于在一个字符串中查找另一个字符串的位置,函数返回值为子串在字符串中的位置,如果没有找到则返回NULL。
-
函数原型:char *strstr(const char *haystack, const char *needle);
-
其中,haystack表示主串,needle表示要查找的子串。
strstr函数应用
代码
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[20] = "abcdefg";
char arr2[20] = "bcd";
char* ret = strstr(arr1, arr2);
printf("%s\n", ret);
return 0;
}
arr1为主串,arr2为子串
输出结果
strstr模拟实现
#include<stdio.h>
#include<assert.h>
char* my_strstr(char* arr, const char* arr1)
{
const char* cp = arr;//cp负责记录子串在主串中的起始地址
const char* a1 = NULL;
const char* a2 = NULL;
while (*cp)//从cp开始遍历主串
{
a1 = cp;//将cp的地址存入a1
a2 = arr1;//将子串arr1的起始地址存入a2
while (*a1 == *a2 && *a1 != '\0' && *a2 != '\0')//判断a1中的字符是否等于a2
{
a1++;//让a1和a2向后移动
a2++;
}
if (*a2 == '\0')//当a2等于'\0'时,说明子串在主串中有相同的字符串,返回子串在主串中的起始地址cp
{
return cp;
}
cp++;//若当前主串中没有与子串相同的字符串,则让cp向后移动,继续遍历,直到*cp=='\0'
}
return NULL;//若主串中没有与子串相同的字符串,返回空指针
}
int main()
{
char arr[20] = "abcderg";
char arr1[20] = "der";
printf("%s\n", my_strstr(arr,arr1));
return 0;
}