2015-12-02 41 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找到.... –