c语言字符匹配
发布时间: 2024-12-10 19:03:20
① c语言中怎样用“百分比”来匹配字符串比如执行一个功能的命令是abcd,但是用户可能会输入abce
可以用比对字符函数对每一个字符进行比对,对返回1错误返回0病并将结果全部加到一个变量中,啊事先应该知道命令字符数目,例:预定义命令为abcd,计算数目为4并存储。然后用户输入命令abce,与预定义命令匹配相同数目为3,然后printf("%d"%%,匹配数目);就行啦,纯属个人愚见,是个奔方法,自知不如,只希望楼主受到启发,代码自己想~忘采纳~~~
② 解析一哈c语言中的kmp算法,bf算法,kr算法之间的联系与区别,尽量浅显易懂,谢谢!
三种算法联系:都是字符串匹配算法。
区别:
“KMP算法”:在匹配过程称,若发生不匹配的情况,如果next[j]>=0,则目标串的指针i不变,将模式串的指针j移动到next[j]的位置继续进行匹配;若next[j]=-1,则将i右移1位,并将j置0,继续进行比较。
“BF算法”是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果。
“KR算法”在每次比较时,用HASH算法计算文本串和模式串的HASH映射,通过比较映射值的大小来比较字符串是否匹配。但是考虑到HASH冲突,所以在映射值相同的时候,还需要近一步比较字符串是否相同。但是在每次比较时,需要计算HASH值,所以选择合适的HASH算法很重要。
略知一二!
③ c语言下如何用正则或者字符串查找匹配特定字符串并提取出来
在字符串中查找字符串是吧
#include<stdio.h>
intfun(char*str,char*find)
{
inti,j,n=0;
for(i=0;str[i];i++)
{
if(str[i]==find[0])
for(j=1;;j++)
{
if(find[j]==0)returni+1;//返回位置
if(find[j]==str[i+j])n++;
elsebreak;
}
}
return0;//不存在返回0
}
intmain()
{
charstr[]="onetwothree",find[]="two";
printf("%d ",fun(str,find));
return0;
}
热点内容