字符串匹配

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 
 5 int Index_BF(const char *dst,const char *src,int pos)
 6 {
 7     int i=pos,j=0;
 8     while(dst[i+j]!='\0'&&src[j]!='\0')
 9     {
10         if(dst[i+j]==src[j])
11         {
12 
13             j++;
14         }
15         else
16         {
17             i++;
18             j=0;
19         }
20 
21     }
22     if(src[j]=='\0')
23         return i;
24     else 
25         return -1;
26 
27 }
28 
29 char *func()
30 {
31     const char *dst="aaacaaa";
32     const char *src="aca";
33     const char *src2="a";
34     char *str="";
35     int src_len=strlen(src);
36     int left=0,right=0;
37     int index_left,index_right;
38     int index=Index_BF(dst,src,0);
39     if(index!=-1)
40     {
41         index_left=Index_BF(dst,src2,0);
42         index_right=Index_BF(dst,src2,index+src_len);
43         if(index_left!=-1&&index_left<index)
44             left=1;
45         if(index_right!=-1&&index_right>index+src_len-1)
46             right=1;
47 
48     printf("index %d index_left %d index_right %d\n",index,index_left,index_right);
49     }
50     else
51         str="invalid";
52     if(left==1&&right==0)
53         str="backward";
54     else if(left==0&&right==1)
55         str="forward";
56     else if(left==1&&right==1)
57         str="both";
58     else
59         str="invalid";
60     return str;
61 
62 }
63 void main()
64 {
65     char *str=func();
66     printf("func\n");
67     printf("%s\n",str);
68 }

 

posted on 2017-05-26 17:19  woshare  阅读(205)  评论(0)    收藏  举报