如何在char 2D数组中搜索单词?

时间:2017-02-27 15:19:46

标签: c++ arrays multidimensional-array

所以我目前正在开发一个项目,要求我从用户那里获取数组的字样,然后让他们在数组中搜索一个单词。程序必须显示数组中单词的位置。这就是我的所作所为:

#include <iostream.h>
#include <conio.h>

main()
{
 char studentsList[30][20];
 int size, flag = 0, pos;
 cout << "Enter the size of the array: ";
 cin >> size;
 cout << "Enter yhe names of the students: \n";
 for(int i = 0; i < size; i++)
 {
  cout << "Student no. " << i + 1 << ": ";
  cin >> studentsList[i];
 }
 for(int m = 0; m < size; m++)
 {
  cout << studentsList[m] << "\t";
 }
 char searchName[20];
 cout << "type the name you need to search: ";
 cin >> searchName;
 for(i = 0; i < size; i++)
 {
  if(studentsList[i] == searchName)
  {
   flag = 1;
   pos = i + 1;
  }
 }
 if(flag == 0)
  cout << "Term not found.";
 else
  cout << "Term found at position " << pos;
 getch();
}

我无法识别代码中的错误。它始终将输出设置为“未找到术语”。&#39;帮助将不胜感激!

1 个答案:

答案 0 :(得分:-2)

我认为问题在于您使用等式检查的方式。

位于if(studentsList[i] == searchName)

==正在比较内存地址。 相反,由于您使用的是char [],最好使用实用程序函数来检查char的等号char。

bool arrcmp( unsigned char arr1[], unsigned char arr2[] ) {
    int i = 0;
    int match = 0;

    if(strlen(arr1) != strlen(arr2)) {
        return false;
    }
    for( i=0; i < strlen(arr1); ++i ) {
        if( arr1[i] != arr2[i] ){
            match = 1;
            break;
        }
    }
    return match==0;
}