#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
char* Mystrstr(char* str1, char* str2) {
assert(*str1);
assert(*str2);
char* temp1 = str1;
char* temp2 = str2;
//求str2的长度
int len = 0;
while (*str2 != '\0') {
++str2;
++len;
}
str2 = temp2;
while (*str1 != '\0') {
//如果指针str1和str2所指的值相同,就让指针temp1等于str1,开始查找
if (*str1 == *str2) {
temp1 = str1;
int i = 0;
//向后查找len次,如果不同则退出循环
for (;
i < len;
++i) {
if (str1[i] != str2[i]) {
break;
}
}
//退出循环后如果i与len相等,说明str2为str1的子串,返回指针temp1
if (i == len) {
return temp1;
}
}
++str1;
}
//全部找完没有返回,则说明str2不是str1的子串
return NULL;
}int main() {
char str1[] = "abcdefg";
char str2[] = "bcd";
char* temp = Mystrstr(str1, str2);
//printf("%s", temp);
if (!temp) {
printf("不是子串\n");
}
else {
printf("是子串\n");
}
system("pause");
return 0;
}
【C语言实现strstr】
文章图片
推荐阅读
- c/c++|有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代...
- C/C++|C/C++ basis 02
- Qt实战|Qt+OpenCV联合开发(二十一)--图像翻转与旋转
- Qt实战|Qt+OpenCV联合开发(十四)--图像感兴趣区域(ROI)的提取
- Qt实战|Qt+OpenCV联合开发(十三)--通道分离与合并
- opencv|Qt+OpenCV联合开发(十六)--图像几何形状绘制
- Qt实战|Qt+OpenCV联合开发(十七)--随机数与随机颜色
- SNAT的MASQUERADE地址选择与端口选择
- IPTABLES的连接跟踪与NAT分析
- IPVS分析