C/C++查找子串
原创
©著作权归作者所有:来自51CTO博客作者黑马金牌编程的原创作品,请联系作者获取转载授权,否则将追究法律责任
查找子串
- 实现自己的查找子串功能,需求在字符串中查找对应的子串,如果有,返回字符串第一个字母的位置,如没有返回-1.
代码示例:
#define
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//优化思路 memcmp(str,substr,3)==0
int myStrstr(char*str, char*subStr)
{
int num = 0;
while (*str!='\0')
{
if (*str != *subStr)
{
str++;
num++;
continue;
}
//创建临时指针
char*tmpStr = str;
char*tmpSubStr = subStr;
while (*tmpSubStr!='\0')
{
if (*tmpStr != *tmpSubStr)
{
//匹配失败
str++;
num++;
break;
}
tmpStr++;
tmpSubStr++;
}
if (*tmpSubStr == '\0')
{
//匹配成功
return num;
}
}
return - 1;
}
void test01()
{
char*str = "abcdefgdnf";
int ret = myStrstr(str, "dnf");
if (ret == -1)
{
printf("未找到子串\n");
}
else
{
printf("找到了子串,位置为:%d\n",ret);
}
}
int main()
{
test01();
return EXIT_SUCCESS;
}
更多文章,敬请关注微信公众号:YQ编程