函数原型
const char * strstr ( const char * str1, const char * str2 );
需要的头文件string.h
从原型可以看出它的返回值为const char*一个字符类型的常量指针
参数
str1
要扫描的字符串
str2
包含要查找的字符串
括号里要传入的值也是两个指针,也用了const修饰,为什么是常量等到下面模拟实现时再进行说明
使用方法直接上代码说明
#include<stdio.h>
#include<string.h>
int main()
{
char str[] = "Hello World"; //要扫描的字符串。
char str2[] = "llo"; //要查找的字符串
char* a = strstr(str,str2);
if (a != NULL)
{
printf("%s\n", a);
printf("%p\n", a);
}
else if (a == NULL)
{
printf("没有找到");
printf("%p\n", a);
}
}
看看结果
第一个结果为要查找的字符串 的 第一个字符往后的所有内容
下面的结果是这个a储存的地址.
这个地址是什么呢?也直接用代码来说明下
#include<stdio.h>
#include<string.h>
int main()
{
char str[] = "Hello Worldllo"; //要扫描的字符串。
char str2[] = "llo"; //要查找的字符串
printf("%p\n",&str[2]);//打印一下 被查找字符串 中 要查找字符串 的第一个字符出现的地址
char* a = strstr(str,str2);
if (a != NULL)
{
printf("%s\n", a);
printf("%p\n", a);
}
else if (a == NULL) //a == NULL就打印
{
printf("没有找到");
printf("%p\n", a);
}
}
看看结果
可以看到 要扫描的字符串中 与 要查找的的字符串 的第一个字符出现的地址与strstr的返回值一样这就说明了strstr返回的就是 要查找的字符串 第一个 字符出现的地址,后面的后面还有一个 "llo" strstr就不理了它只找一次就罢工了,有点懒
下面来看看搜索不到的情况
#include<stdio.h>
#include<string.h>
int main()
{
char str[] = "Hello World"; //要扫描的字符串
char str2[] = "lll"; //要查找的字符串
char* a = strstr(str,str2);
if (a != NULL)