1. strstr ( ) 函数的功能详解:
char * strstr ( char *str1, const char *str2);
该函数的 作用是返回字符串中首次出现子串的地址。
其中:
str1:? 被查找目标
str2:? 要查找对象
返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;
如果str2不是str1的子串,则返回NULL。
例子:
2. 该函数的模拟实现:
#include <stdio.h>
#include <string.h>
char *my_strstr(char*, char*);
int main()
{
char arr1[] = "abcdefgh";
char arr2[] = "fg";
printf ("%s" ,my_strstr(arr1, arr2));/*会打印出字符串1中符合要求的字符串和
*其符合要求的字符串中在字符串1中剩余的内容
*/
return 0;
}
char *my_strstr(const char*str1,const char*str2) //因为在接下来的代码操作中不会改变它的值
{
char *s1 = str1; //因为str1和str2是形参,所以它只是一个单纯的地址
//所以要创建指针变量来存放这个地址时,有一颗*就够了
char *s2 = str2;
char *cur = str1;//其中cur指针是用来记录当前开始匹配的位置
while (*cur)
{
s1 = cur;
s2 = str2;
while ((*s1) && (*s2) && (*str1 == *str2))
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return cur;//其返回的是字符串1中相同的字符串的首元素地址
}
cur++; //这是在*str1与*str2不相等的情况下出现
}
return NULL; //找不到子串
}
【思路】:
?
|