1

我正在尝试编写一种算法来搜索文档中的特定块。如果找到该块,则返回 1,否则返回 0。基本上,如果该块为“abcd”且特定长度为 2,则该块将被拆分为“ab”和“cd”。然后搜索文档以查看是否存在“ab”或“cd”。我认为我的算法非常好,但程序不断崩溃。我认为它与strncmp有关,但我不知道如何解决它。

这是我的代码:

int main( )
{
         char s1[] = "abcdef";
         char s3[] = "cd";
         size_t s1Size = strlen(s1);
         int k = 2;

         if(simple_substr_match(s3,k,s1,s1Size))
            printf("Match Found\n");
         else
            printf("No Match Found\n");
         return 0;  
}

int simple_substr_match(const unsigned char *ps, int k, const unsigned char *ts, int n)
{
        int isMatch; 
        int i;
        int j; 

        for(i=0;i<n;i++)
        {
           if(strncmp(ts[i], ps, k))
           {
              isMatch = 1; 
           }
        }

        return isMatch; 

}
4

2 回答 2

0

使用: if(strncmp(&ts[i], ps, k)) 或 if(strncmp(ts+i, ps, k))

注意警告。通过使用 ts[i] 您可以取消引用并与作为字符的值进行比较。strncmp 需要一个地址 [当然要有适当的内存]

于 2013-09-19T01:03:57.373 回答
0

strcmp 将比较字符串

利用strstr(buffer, s1) != null

http://en.cppreference.com/w/c/string/byte/strstr

于 2013-09-18T22:01:37.680 回答