2015-12-02 70 views
0

我有一個結構,它擁有兩個名稱,但它們是字符形式 - 所以數組 char [2] [10] 它應該是兩個名稱,它們是最長十個字符。 我想通過它們進行搜索。如何搜索結構/文件中的名稱

while (ans3==1) 
{ 
    cout << "\nPlease enter the name you want to search" 
     <<endl; 
    cin >> searchName; 
    for (int i=0; i < size; i++) 
    { 
     cout <<"\nsearching " <<endl; 
     for (int k=0; k< 10; k++) 
     if (MyData.name[i][k]==searchName[k]) 
     { 
      cout << "\nName was found at position "<< k <<endl; 
     } 
     else 
      cout << "\nName not found at position " <<k <<endl; 
    } 

    cout << "\nDo you want to search for a name? (1 for y, 2 for n)" <<endl; 
    cin >> ans3; 
} 

這個編譯,但沒有做我想做的事。有人可以幫助嗎?謝謝。

+0

如果字符串少於9個字符,'for(int k = 0; k <10; k ++)'將在字符串結束後繼續搜索。考慮使用['strncmp'](http://en.cppreference.com/w/c/string/byte/strncmp)。 – user4581301

回答

0

您當前的結構假定名稱從數組的索引0開始。 我會推薦的是檢查姓名數組中的每個字符與搜索到的姓名的第一個字符,直到您命中名稱數組的末尾或找到匹配。如果你找到一個匹配,然後檢查名稱數組中剩餘的字符與搜索字符串中的下一個字符。 因爲現在你要檢查的是如果兩個字符串都以相同的字母開頭。 將姓名的開始位置返回到第一個匹配的索引。 如果我的建議不是你想要的,你也可以使用strcomp()。

+0

謝謝。我寫的那種,它是一種基本的東西,但它完成了工作。 –

+0

做了一個for循環,運行這兩個名字,檢查第一個字母,如果找到第一個字母,它將遍歷整個單詞。但是唯一的事情是,當它運行時,它會輸出:找到1,找到2找到.... –