运行截图:
代码:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
typedef struct
{
char ch[MAXSIZE];
int length;
}SString;
//赋值函数
void Assig(SString &S)
{
int m,i;
S.length = 0;
printf("请输入赋值的个数:");
scanf("%d",&m);
printf("请输入%d个数: ",m);
for(i = 1; i <= m; i++)
{
scanf("%d",&S.ch[i]);
S.length++;
}
printf("赋值成功\n");
}
int Index_BF(SString S,SString T,int pos)
{
int i,j;
i = pos;
j = 1;
while(i <= S.length&&j <= T.length )
{
if(S.ch[i]==T.ch[j])
{
i++;
j++;
}
else
{
i = i-j+2;
j = 1;
}
}
if(j > T.length)
return i-T.length;
else return 0;
}
int main()
{
int i,pos,k;
SString S,T;
printf("主串赋值\n");
Assig(S);
printf("模式串赋值\n");
Assig(T);
printf("请输入要从主串第几个数开始比较: ");
scanf("%d",&pos);
k = Index_BF(S,T,pos);
if(k!=0)
printf("从第%d个开始匹配成功\n",k);
else
printf("无法匹配!");
}