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 }
![]()