gpt4 book ai didi

c - strcasestr 无法正常工作

转载 作者:行者123 更新时间:2023-11-30 19:48:15 26 4
gpt4 key购买 nike

我有两个结构数组和一个嵌套的 for 循环。两个数组中存在相同的单词,但 strcasestr 未检测到它们。我还使用 strcasestr 来查找单词中相同的子字符串。

这是我的代码片段:

for(int itr = 0; itr < arrayItr; itr++)
{
for(int itr2 = 0; itr2 < arrayItr2; itr2++)
{
if(strcasestr(termsArraypast[itr].term, termsArrayTerms[itr2].term) > 0)
{
printf("%d %d %s\n", termsArraypast[itr].charDistance, termsArraypast[itr].termDistance, termsArraypast[itr].term);
}
}
}

请注意,所有这些变量都已在我的程序中声明。我刚刚在这部分上花了几个小时,但无法弄清楚。谢谢。

最佳答案

char *strcasestr(const char *haystack, const char *needle);

返回指向子字符串开头的指针,如果未找到字符串,则返回 null

因此它将返回一个指针值,而不是可能超出整数范围的整数。

并且您将其与大于 0 进行比较。这是错误的,你可以检查不为零。

例如:程序

 #include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main()
{
char arr1[10];
char arr2[10];
int ret;
strcpy(arr1,"foobar");
strcpy(arr2,"foobar");
printf("arr1 %s\n",arr1);
printf("arr2 %s\n",arr2);

ret= strcasestr(arr1,arr2) ;

printf("ret %d ret %p \n",ret,ret);
if(strcasestr(arr1,arr2) >0)
{
printf("sub found\n");
}
if(strcasestr(arr1,arr2) != 0)
printf("substring found for not null check \n" );
}

o/p

arr1 foobar
arr2 foobar
ret -1073787886 ret 0xbfff4c12
substring found for not null check

关于c - strcasestr 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19782708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com