我正在尝试编写一种搜索文档以查找特定块的算法。如果找到块,则返回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;
}
答案 0 :(得分:0)
答案 1 :(得分:0)
使用: if(strncmp(&amp; ts [i],ps,k)) 要么 if(strncmp(ts + i,ps,k))
注意警告。 通过使用ts [i],你正在derefing并与作为char的值进行比较。 strncmp需要一个地址[有适当的记忆]