请用C语言编写一个高效率的函数来从字符串中找到子串的位置,并且返回其下标;
注:参数中的字符串都以\0结束(不允许使用C/C++内置的字符串查找函数)
/***************************************************************
File Name: my_strstr.c
Author: 浮生流年
Function List: main() 主函数
Created Time: 2018年02月09日 星期五 14时25分05秒
**************************************************************/
#include <stdio.h>
int findString(const char str[], const char sub[])
{
const char *p, *q;
int i = 0;
if (NULL == str || NULL == sub)//判断str和sub的有效性
return -1;
while (*str)//遍历str字符串
{
p = str;
q = sub;
while (*p++ == *q++)//遍历sub字符串
{
if (*q == '\0')//如果到了sub字符串结束符位置
return i; //表示找到了sub字符串,退出
}
i++;
str += 1;
}
return -1;
}
int main()
{
char a[] = "hello world";
char b[] = "ld";
int i;
i = findString(a, b);
if (i == -1)
printf("没有子串\n");
else
printf("第一个子串的下标是 %d\n", i);
return 0;
}
本文介绍了一个用C语言编写的高效子串查找函数,该函数不依赖于C/C++内置的字符串查找函数,而是通过逐字符比较的方式实现对目标子串的定位。
&spm=1001.2101.3001.5002&articleId=79298634&d=1&t=3&u=e4f2eb64fadc4bbe9f3dcbbee391c497)
1813

被折叠的 条评论
为什么被折叠?



