这是我到目前为止所做的:
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语句。我错过了什么?
答案 0 :(得分:2)
根据http://en.cppreference.com/w/c/string/byte/strpbrk,strpbrk()
代表
const char* strpbrk( const char* dest, const char* str );
查找dest
指向的字节字符串中的第一个字符,该字符也是str
指向的字节字符串。
因此,如果您真的想在searchterm
中找到整个 searchterm
而不是 nameholder[i]
的任何字符,那么应该使用strcmp
或strstr
。
另请注意,运算符==
不能用于比较两个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