簡體   English   中英

如何編寫函數以搜索數組中的字符串

[英]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任何字符 ,則應使用strcmpstrstr

還要注意,運算符==不能用於比較兩個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM