strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
const char *my_strstr(const char *str, const char * substr)
{
const char *s1 = str;
const char *s2 = substr;
assert(str != NULL);
assert(substr != NULL);
if (*s2 == '\0')
{
return str;//如果是找一个空字符串,直接返回str
}
while (*str != '\0')
{
s1 = str;
s2 = substr;
while(*s1 !='\0' && *s2 != '\0' && *s1 == *s2)
//(*s1 && *s2 && *s1 == *s2)写成这样更简单 '\0'的ASCII为0,所以*s1等于0为假,后面的不参与运算
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return str;
}
str++;
}
return NULL;
}
int main()
{
char *p = "abcddddef";
char *str = "def";
const char *ret = my_strstr(p, str);
if (ret != NULL)
{
printf("%s\n", ret);
}
else
{
printf("找不到\n");
}
system("pause");
return 0;
}