我编写了下面的函数来查找文本中的模式:
bool match(char* patt,char* text){
int textLoc=0, pattLoc=0, textStart=0;
while(textLoc < (int) strlen(text) && pattLoc < (int)strlen(patt)){
if( *(patt+pattLoc) == *(text+textLoc) ){
textLoc= textLoc+1;
pattLoc= pattLoc+1;
}
else{
textStart=textStart+1;
textLoc=textStart;
pattLoc=0;
}
}
if(pattLoc >= (int) strlen(patt))
return true;
else return false;
}
如图所示,该函数采用char*
类型的两个参数。我想使用此函数在binary file
中查找模式,您建议执行此问题吗?
答案 0 :(得分:1)
这里没有对错。我在这里考虑的唯一区别是使用缓冲区/大小方法而不是字符串。
您还应该考虑如何阅读文件。您是要将整个文件读取到内存中还是要分段阅读?
如果您要分段阅读,请始终保存每个部分的最后部分(搜索模式的大小)并将其附加到下一部分的开头。这样,每个部分的截止也将被评估。
答案 1 :(得分:1)
在我看来,您试图自己实现流行的strstr
功能。但这对你没有帮助,因为你要求找到二进制模式。在这种情况下您应该使用的函数称为memmem
。
答案 2 :(得分:1)