14、字符匹配,输出出现的位置

 1 //1、字符串s1,s2
 2 //2、s2[i]取出
 3 //3、s1自0递增,连续和s2比较
 4 //4、匹配到相同,比较停止,返回2,取出s2[i+1],循环开始
 5 //5、没有匹配到相同,比较停止,返回2,取出s2[i+1],循环开始
 6 
 7 #include<stdio.h>
 8 #define Maxlength 1000
 9 
10 int any(char s1[], char s2[]);
11 
12 int main()
13 {
14     int c;
15     int i = 0;
16     int result = 0;
17 
18     char s1[Maxlength];
19     char s2[Maxlength];
20 
21     for(i=0; i<Maxlength; ++i)
22         s1[i] = '\0';
23     for(i=0; i<Maxlength; ++i)
24         s2[i] = '\0';
25 
26     printf("请输入字符串1:\n");
27     for(i=0; (c=getchar())!='\n'; ++i)
28         s1[i] = c;
29 
30     printf("请输入字符串2:\n");
31     for(i=0; (c=getchar())!='\n'; ++i)
32         s2[i] = c;
33 
34     result = any(s1, s2);
35     if(result == 0)
36         printf("\n未查询到匹配部分!");
37     else if(result == 1)
38         printf("\n匹配完成!");
39     else if(result == 2)
40         printf("\n字符串1未输入有效内容!");
41     else if(result == 3)
42         printf("\n字符串2未输入有效内容!");
43 
44     return 0;
45 }
46 
47 int any(char s1[], char s2[])
48 {
49     int i = 0;      //s2
50     int p = 0;      //s1
51     int state = 0;  //单个匹配状态
52     int m = 0;      //匹配结果,0:无相同部分 1:匹配到内容 2:S1未输入 3:s2未输入
53 
54     if(s1[i] == '\0' || s1[i] == '\n')
55         m = 2;
56     if(s2[i] == '\0' || s2[i] == '\n')
57         m = 3;
58 
59     for(i=0; s2[i]!='\0'; ++i,state=0,p=0)
60     {
61         while(state==0 && s1[p]!='\0')
62         {
63             if(s1[p] == s2[i])
64             {
65                 printf("%d", p+1);
66                 state = 1;
67                 m = 1;
68                 ++p;
69             }
70             else if(s1[p+1] == '\0')
71             {
72                 putchar('|');
73                 ++p;
74             }
75             else
76                 ++p;
77         }
78     }
79     return m;
80 }

 

 1 //1、字符串s1,s2
 2 //2、s2[i]取出
 3 //3、s1自0递增,连续和s2比较
 4 //4、匹配到相同,比较停止,返回2,取出s2[i+1],循环开始
 5 //5、没有匹配到相同,比较停止,返回2,取出s2[i+1],循环开始
 6 
 7 #include<stdio.h>
 8 #define Maxlength 1000
 9 
10 int any(char s1[], char s2[]);
11 
12 int main()
13 {
14     int c;
15     int i = 0;
16     int result = 0;
17 
18     char s1[Maxlength];
19     char s2[Maxlength];
20 
21     for(i=0; i<Maxlength; ++i)
22         s1[i] = '\0';
23     for(i=0; i<Maxlength; ++i)
24         s2[i] = '\0';
25 
26     printf("请输入字符串1:\n");
27     for(i=0; (c=getchar())!='\n'; ++i)
28         s1[i] = c;
29 
30     printf("请输入字符串2:\n");
31     for(i=0; (c=getchar())!='\n'; ++i)
32         s2[i] = c;
33 
34     result = any(s1, s2);
35     if(result == 0)
36         printf("\n未查询到匹配部分!");
37     else if(result == 1)
38         printf("\n匹配完成!");
39     else if(result == 2)
40         printf("\n字符串1未输入有效内容!");
41     else if(result == 3)
42         printf("\n字符串2未输入有效内容!");
43 
44     return 0;
45 }
46 
47 int any(char s1[], char s2[])
48 {
49     int i = 0;      //s2
50     int p = 0;      //s1
51     int state = 0;  //单个匹配状态
52     int m = 0;      //匹配结果,0:无相同部分 1:匹配到内容 2:S1未输入 3:s2未输入
53 
54     if(s1[i] == '\0' || s1[i] == '\n')
55         m = 2;
56     if(s2[i] == '\0' || s2[i] == '\n')
57         m = 3;
58 
59     for(i=0; s2[i]!='\0'; ++i,state=0,p=0)
60     {
61         while(state==0 && s1[p]!='\0')
62         {
63             if(s1[p] == s2[i])
64             {
65                 putchar(s2[i]);
66                 putchar('\t');
67                 printf("%d\n", p+1);
68                 state = 1;
69                 m = 1;
70                 ++p;
71             }
72             else if(s1[p+1] == '\0')
73             {
74                 putchar(s2[i]);
75                 putchar('\t');
76                 putchar('|');
77                 putchar('\n');
78                 ++p;
79             }
80             else
81                 ++p;
82         }
83     }
84     return m;
85 }

 

posted @ 2017-11-28 21:04  Goz  阅读(271)  评论(0编辑  收藏  举报