bfsrch.c

来自「单片机程序设计基础 随书光盘」· C语言 代码 · 共 35 行

C
35
字号
//直观的模式匹配算法(BF算法)。

char STR[80]="The 80C552 has two redeced power modes of operation.";//主串。
char SUB1[]="80C552";	//模式串1
char SUB2[]="80C51";	//模式串2

int len (char c[]) //求字符串长度
{
	int i=0;
	while (c[i]) i++;
	return i;
}

int BFSRCH (char M[],char S[]) //BF算法
{
	int m,n,i,j,k;
	m=len(M);	//求主串长度
	n=len(S);	//求模式串长度
	for (k=0;k<=m-n;k++) { 	//最大匹配操作遍数为:m-n+1
		i=k;j=0;	//本次匹配的起点
		while (j<n && M[i]==S[j]) {i++;j++;}	//匹配过程
		if (j==n) return k;	//匹配成功,返回模式串在主串中的位置
		else k++;	//匹配起点向后移动一个字符,继续匹配
		}
	return -1;	//匹配失败
}

 main ( )
{
	int f;
	f=BFSRCH (STR,SUB1);//匹配成功,f=4
	f=BFSRCH (STR,SUB2);//匹配失败,f=-1
	while (1) ; //在这一行设置断点,中止程序运行,以便观察程序运行的结果 
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?