通配符 查找字符串
编写函数int FindString(char *source, char *pattern),该函数统计字符串source中出现的所有符合pattern模式串的任意长度的子串总数。其中pattern模式串的两头可能含有通配符’*’,该通配符表示零到任意个数个字符。
例如:FindString(”aaabbb”,”*aa*”) 则返回值为9(aa,aaa,aaab,aaabb,aaabbb,aa,aab,aabb,aabbb)。
我写了一半
#include <stdlib.h>
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
int FindString(char *source, char *pattern);
int main()
{
int num=0;
num=FindString("abcbbc","*bc");
printf("%d",num);
system("pause");
return 0;
}
int FindString(char *source, char *pattern)
{
int num=0,key=0;
int i=0,j=0;
for (i=0;*(pattern+i)!='\0';i++)
{
if (*(pattern+i)=='*')
{
key++;
}
}
if(key==0)
{
for (i=0;*(source+i)!='\0';i++)
{
if (*(source+i)==*(pattern))
{
for ( j=0;*(pattern+j)!='\0'&&*(source+j+i)!='\0';j++)
{
if (*(pattern+j)!=*(source+j+i))
{
break;
}
}
if (*(pattern+j)=='\0')
{
num++;
}
}
}
return num;
}
if (key==1)
{
。。。。。。。。
}
}
}
通配符我准备分情况考虑 但是觉得我写的很复杂 请教好点的做法 谢谢