我写了下面的函数来查找文本中的模式:

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中查找模式,您建议执行此问题什么?

最佳答案

这里没有对与错。我在这里要考虑的唯一区别是使用缓冲区/大小方法而不是字符串。

您还应该考虑如何阅读文件。您打算将整个文件读取到内存中还是要分节阅读?

如果要分节阅读,请务必保存每节的最后一部分(搜索模式的大小),并将其附加到下一节的开头。这样,还将评估每个部分的截止值。

关于c++ - 在二进制文件中找到模式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9644881/

10-12 04:00