如何编写函数来搜索数组中的字符串

时间:2012-09-18 16:54:57

标签: c arrays string search

这是我到目前为止所做的:

for(i = 0; i <= 9; i++){
    printf("%d", i);
    found = strpbrk(nameholder[i], searchterm);
    if(strpbrk(nameholder[i], searchterm) == searchterm){
        printf("found\n");
        foundwhere = i + 1;
        break;
    }
}// end for

当我运行程序时,strpbrk函数找到字符串,但由于某种原因它从不触发if语句。我错过了什么?

2 个答案:

答案 0 :(得分:2)

根据http://en.cppreference.com/w/c/string/byte/strpbrkstrpbrk()代表

  

const char* strpbrk( const char* dest, const char* str );
  查找dest指向的字节字符串中的第一个字符,该字符也是str指向的字节字符串。

因此,如果您真的想在searchterm中找到整个 searchterm而不是 nameholder[i]任何字符,那么应该使用strcmpstrstr

另请注意,运算符==不能用于比较两个char*字符串的相等性,因为它只是比较地址是否相等而忽略字符串内容。请改用strcmp()

答案 1 :(得分:-1)

如果我正确理解(你的描述含糊不清)你想要做什么,那么你似乎使用了错误的功能。

在strpbrk上引用cpp文档:

  

返回指向str1中任何字符的str1中第一个匹配项的指针,如果没有匹配则返回空指针。

这不是你想要它做的,对吧?你应该看strcpm函数。 http://www.cplusplus.com/reference/clibrary/cstring/strcmp/

您的代码应如下所示:

for(i = 0; i <= 9; i++){ 
    if(strcmp(nameholder[i], searchterm) == 0){
        printf("found\n");
        foundwhere = i + 1;
        break;
    }
}// end for