崩溃的C程序

时间:2013-09-18 21:58:23

标签: c arrays string char strncmp

我正在尝试编写一种搜索文档以查找特定块的算法。如果找到块,则返回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; 

}

2 个答案:

答案 0 :(得分:0)

strcmp将比较字符串

使用strstr(buffer, s1) != null

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

答案 1 :(得分:0)

使用: if(strncmp(&amp; ts [i],ps,k)) 要么 if(strncmp(ts + i,ps,k))

注意警告。 通过使用ts [i],你正在derefing并与作为char的值进行比较。 strncmp需要一个地址[有适当的记忆]