1.描述
const char * strstr ( const char * str1, const char * str2 ); char * strstr ( char * str1, const char * str2 )作用是判断在str1是否包含str2,是就返回str1中与str2匹配的头指针,失败返回空指针。库函数中没有严格的类型检查,空指针传入会报错。
2.代码展示
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
const char *mystrstr(const char*str1
, const char* str2
)
{
assert(str1
&&str2
);
while (*str2
)
{
while (*str1
&&*str1
!= *str2
)
{
++str1
;
}
if (!*str1
)
return NULL;
const char* tmp1
= str1
, *tmp2
= str2
;
while (*str1
&&*str2
&&*str1
== *str2
)
{
++str1
;
++str2
;
}
if (*str2
)
str1
= tmp1
+ 1, str2
= tmp2
;
else
str1
=tmp1
;
}
return str1
;
}
void test3()
{
char arr1
[] = "hello world";
char arr2
[]="ld";
char *ret1
= strstr(arr1
, arr2
);
printf("%p %p %p\n", ret1
,arr1
+9,arr2
);
char arr3
[] = "hello world";
char arr4
[] = "ld";
const char *ret2
= mystrstr(arr3
, arr4
);
printf("%p %p %p\n", ret2
,arr3
+9,arr4
);
}
int main()
{
test3();
system("pause");
return 0;
}
3.结果展示