大家看看哪里出现问题了。。程序运行不了。。
#include<stdio.h>#include<string.h>
#define maxsize 100
typedef struct{
char ch[maxsize];
int length;
}String;
int PartPosition(String S,String T,int k)
{
int i=k-1;
int j=0;
while(i<S.length&&j<T.length)
{
if(S.ch[i]==T.ch[j])
{
i++;
j++;
}
else
{
i=i-j+1;
j=0;
}
}
if(j>=T.length)
return i-T.length;
else
return -1;
} //字符串的模式匹配算法
int main(void)
{
int i,j,k;
int rec[100];
i=0;
String S1,T1;
printf("\t请输入主字符串:");gets(S1.ch);
printf("\t请输入要比较的字符串:");gets(T1.ch);
S1.length=strlen(S1.ch);
T1.length=strlen(T1.ch);
k=0;
while(k<S1.length-1)
{
j=PartPosition(S1,T1,k);
if(j<0)
{
printf("无");
}
else
{
i++;
rec[i]=j;
k=j+T1.length;
}
}
printf("子串T1出现在S1中的次数为%d",T1.ch,i);
printf("%d的匹配位置分别为",i);
for(k=1;k<=i;k++)
printf("%-4d",rec[k]);
printf("\n");
return 0;
}