#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
const char* my_strstr(const char* dest,const char* str)
{
assert(str != NULL); assert(dest != NULL);
const char*d = dest;
const char*s = str;
while (*d!='\0' )
{
const char* c = d;
while (*c++ == *s++);
if (*s == '\0')
{
return d;
}
s = str;
d++;
}
return 0;
}
int main()
{
int ret = 0;
const char dest[20] = "abcdefghi";
const char str[20] = "cdefg";
printf("%s", my_strstr(dest,str));
system("pause");
return 0;
}
函数实现思路:
1:首先了解函数的功能
2:strstr的函数要实现从一个字符串中查找另一个字符串子串,并且打印出字符子串。比如:目标字符串为abcdefg,查找字符串为cde。其输出结果就为cdefg。
3:首先了解函数的返回类型为char*并且两个参数类型都为const char*,都为不可变的字符串。
4:确定目标字符串比查找字符串大,也就是说dest比str长度大。
5:要在dest中找到str就需要让dest进行遍历,所以需要一个循环,用while循环,其约束条件为dest到‘0’停止。
6:dest++==str++,找到dest与str相等的字符,因为不一定可以一次性找到str所有的字符,所以应有一个条件为if(*str==‘0’)
7:因为dest与str在循环++,所以需要一个定义一个c让其等于dest,也就是记住在dest开始等于str时的地址,也就是c++=str++,最后在if条件为真时输出dest。
8:当然,在if的条件不为真时,str的地址应该返回其首地址,重新查找。