自定义字符串查找函数
字符串查找有单个字符查找和字符串查找,单个字符查找相对简单。接下来以strstr()字符串查找函数实现为例进行讲解。
例1 findStr.c
1 #include<stdio.h>
2 char* findStr(const char *src, const char *str)
3 {
4 int j=0;
5 for (int i=0; src[i]!='\0'; i++)
6 {
7 if(src[i]!=str[0])
8 continue;
9 while(str[j]!='\0' && src[i+j]!='\0')
10 {
11 j++;
12 if(str[j]!=src[i+j])
13 break;
14 }
15 if(str[j]=='\0')
16
17 return &src[i];
18 }
19 return -1;
20 }
21 int main(){
22 char* src = "Hold fast to dreams ,For if dreams die Life is a
23 broken-winged bird That can never fly.Hold fast to dreams For
24 when dreams go Life is a barren field Frozen only with snow";
25 printf("%s",findStr(src," barren "));
26 return 0;
27 }
例1运行结果如图1所示。
图1 例1运行结果
在例1中,第6行代码判断源字符串src中是否存在要查找的字符串str,如果有没有相等的字符串则结束本次循环从src字符串的下一个字符进行查找,若遍历源字符串后没有找见。则第19行代码退出程序并返回-1。第9~14行代码,若在查找过程中找到字符串str,在while()循环中src[i+j]的目的是在查找到字符串后向后遍历查找字符串大小的长度,在查找过程中若找见则退出循环,返回-1,若找见该字符串则返回查找字符串str在源字符串中出现的位置。