这道题不难,但是其中有些细节掌握需要用心,注释比较完备。
1 char str1[80];
2 char str2[80];
3 int i = 0,j = 0,k;
4 int count =0,c = 0;
5 printf("请输入源字符串:");
6 gets(str1);
7 printf("请输入需要查找的字符串");
8 gets(str2);
9 //从源字符串的第一个字符开始查找
10 for(i=0;str1[i];i++)
11 {
12 //如果剩余字符串的长度小于查找字符串则终止循环
13 if(strlen(str1) - i <strlen(str2))
14 {
15 break;
16 }
17 else
18 {
19 //如果源字符的第i个字符等于查找字符的第一个字符
20 if(str1[i] == str2[j] || str2[j] == '?')
21 {
22 //取当前i位置字符,循环查找等于查找字符长度
23 for(j = 0,k = i;str2[j];j++,k++)
24 {
25 //如果字符符合
26 if(str1[k] == str2[j] ||str2[j] =='?')
27 {
28 count++;
29 }
30 }
31 //如果相同字符等于查找字符长度,则计数
32 if(count == strlen(str2))
33 {
34 c++;
35 }
36 }
37 //重置变量
38 count =0;
39 j=0;
40 }
41 }
42 printf("%d",c);
43 system("Pause");
44 return 0;