![](/img/trans.png)
[英]How do I write a function to search for an element in two dimensional array?
[英]How to write a function to search for a string within an array
這是我到目前為止的內容:
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語句。 我想念什么?
根據http://en.cppreference.com/w/c/string/byte/strpbrk,strpbrk strpbrk()
用於
const char* strpbrk( const char* dest, const char* str );
發現在字節串的第一個字符指向dest
,這也是在字節串由指向str
。
因此,如果您確實要查找整個 searchterm
而不是nameholder[i]
的searchterm
的任何字符 ,則應使用strcmp
或strstr
。
還要注意,運算符==
不能用於比較兩個char*
字符串的相等性,因為它只比較地址是否相等而忽略字符串內容。 請改用strcmp()
。
如果我正確理解(您的描述含糊不清)您要嘗試執行的操作,則您似乎使用了錯誤的功能。
在strpbrk上引用cpp文檔:
返回指向str2中任何字符的第一個出現在str1中的指針,如果沒有匹配項,則返回null指針。
那不是你想要的,對吧? 您應該查看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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.