这个while(*cp)循环里面的东西看不明白,最后是怎么把子集里的数打印出来的呀,返回去的不是CP地址么
2条回答 默认 最新
关注 strstr的作用是在字符串s1里面查找是否有字符串s2
- 如果有,返回字符串s2在字符串s1里的起始地址
- 如果没有,返回NULL
模拟实现
str函数的模拟实现相对来说比较复杂
最重要的就是遇到多个字符相同而最后不同的情况
- 需要用另外一个指针C来遍历字符串,找寻C和ptr2所指元素相等的第一个字符
- 然后用ptr1来和ptr2比较,C保持不变
- 如果匹配成功,返回C指针
- 如果匹配失败,C++后赋值给ptr1,继续进行查找
//5.strstr 判断str1里面有没有str2 //如果有,返回str1里str2的起始地址 //如果str1不包含str2,返回null char* my_strstr(const char* str1, const char* str2) { const char* s1 = str1; const char* s2 = str2; const char* cur = str1; assert(str1 && str2); if (*str2 == '\0') { return (char*)str1; } while (*cur) { s1 = cur; s2 = str2; while (*s1 && *s2 && *s1 == *s2) { s1++; s2++; } if (*s2 == '\0') return (char*)cur; cur++; } return NULL; } int main() { char arr1[15] = { "helloworld" }; char arr2[] = { "owo" }; char* p=strstr(arr1, arr2); if (p == NULL) { printf("找不到\n"); } else { printf("%s\n", p); } return 0; }
如果对你有帮助,还请点个采纳,万分感谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
- ¥15 linux驱动,linux应用,多线程
- ¥20 我要一个分身加定位两个功能的安卓app
- ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
- ¥15 IAR程序莫名变量多重定义
- ¥15 (标签-UDP|关键词-client)
- ¥15 关于库卡officelite无法与虚拟机通讯的问题
- ¥15 目标检测项目无法读取视频
- ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
- ¥100 求采集电商背景音乐的方法