//头文件
#include //字符串头文件
intBF(chars (,chars (,char t[] ),int pos ) )/BF算法s为原字符串,t为一致字符串
intm,n;
inti=pos,j=0; 从//0的位置开始匹配
m=Strlen(s;
n=Strlen(t; //S,t的长度用m、n表示
while(I=mj=n ) (/m,n为字符串长度
if(s ) I )==t ) j ) )
{
I;
j; //一个一个匹配,成功的s t
}
else
{
i=i-j 1; //不成功,s返回本次环路匹配的初始位置
j=0; //不成功,t返回0的位置
}
}
是if(jn )
返回(I-n ); //返回成功匹配的原始字符串中第一个字符的位置
else
返回0;
}
int main ()。
char s[]='abcdkeabcfgabcde '; 初始定义//s列
int pos;
pos=BF(s,' abcd ',0 ); 从//0的位置对准abcd
printf(pos=%dn )、pos );
pos=BF(s,' abcde ',pos ); //从上次匹配成功的位置开始匹配abcde
printf(pos=%dn )、pos );
返回0;
}