strstr (str1,str2)函数是用来判断字符串str2是否是字符串str1的子字符串的函数,如果是,则返回str2在str1中出现的首字符地址,否则返回null。
代码如下:
#include <stdio.h>
#include <assert.h>
char * my_strstr(const char *str, const char *substr)
{
assert(str);//断言提示出错位置
assert(substr);
const char *str1 = str;
const char * str2 = substr;
const char *start = NULL;
if (*str2 == '\0')
{
return (char *)str1;
}
while (*str1)
{
start = str1;
while (*str1 && *str2 && *str1 == *str2)//如果str1和str2有一个字符相等,则指针指向下一个字符继续判断
{
str1++;
str2++;
}
if (*str2 == '\0')//如果子字符串str2指向结束符(即子字符串str2中所有字符都与源字符串str1的相等,则返回子字符串第一次出现的位置。否则源字符串str1指向下一个位置继续判断
{
return (char *)start;
}
str1 = start + 1;
str2 =