宁波网站建设方案推广,seo网站外链专发,南宁网站建设开发,网络教学平台登录目录 1.头文件
2.strstr函数的使用
3.strstr函数模拟实现 小心#xff01;VS2022不可直接接触#xff0c;否则#xff01;没这个必要#xff0c;方源面色淡然一把抓住#xff01;顷刻炼化#xff01; 1.头文件
strstr函数的使用需要头文件
#includestring.h… 目录 1.头文件
2.strstr函数的使用
3.strstr函数模拟实现 小心VS2022不可直接接触否则没这个必要方源面色淡然一把抓住顷刻炼化 1.头文件
strstr函数的使用需要头文件
#includestring.h
2.strstr函数的使用 简述strstr函数接收两个字符型地址用于接收两个字符串strstr会返回 第二个字符串中第一个字符串第一次出现的地址
注意返回值是const char*类型
示例如下 我们看到strstr函数会在前一个字符串中找后一个字符串并返回后一个字符串在前一个字符串第一次出现的地址
需要注意strstr函数在判断字符串是否相等时不包括 \0以 \0 为停止比较的标志 如果arr2只有\0那就会直接返回arr1首元素的地址 3.strstr函数模拟实现
#define _CRT_SECURE_NO_WARNINGS
#includestdio.h
#includestring.h
char* my_strstr(char* arr1, char* arr2) {char* larr1 arr1;char* larr2 arr2;if (*arr2 \0) {return arr1;//如果arr2是空数组直接返回arr1的首地址}/*思路* 如果*arr1!*arr2arr1与arr2都是首元素地址不相等那说明起始位置二者之间不存在相同元素返回地址一定不在这里* 直接arr1加1从下一个地址开始比较* * 寻找字符串结束时期寻找结束一定是arr2到 \0 了说明字符串全部找到* */while (* arr2) {//arr2没到\0寻找没结束if (*arr1 ! *arr2) {arr1;//二者不相等都加1从下一个位置开始找}larr1 arr1;//larr1需要赶上arr1的地址从arr1的地址开始找arr2不需要变化arr2始终指向起始位置即可if (*arr2 *arr1) {//二者相等while (*larr1 *larr2) {//用临时变量判断相等不改变变量值larr1;larr2;//相等两者相加if (*larr2 \0) {//先判断这部如果larr2是\0说明larr2\0前一个已经相等所以larr2已经找到了直接返回arr1的地址即可//判断结束arr2到\0了返回arr1的地址return arr1;}if (*larr1 ! *larr2) {//判断过程中突然出现不相等arr1;//arr1加1从下个位置再次开始找larr1 arr1;//larr1追赶上arr1位置larr2 arr2;//larr2重赋值}}}}
}int main()
{ char arr1[] { xxabxxababcxxxx };char arr2[] { abc };char arr3[] { xxbcde };char*p my_strstr(arr1, arr2);printf(%p\n, p);const char* pp strstr(arr1, arr2);printf(%p\n, pp);}
代码冗长复杂可以画图分析如有错误可以指出