所以我目前正在开发一个项目,要求我从用户那里获取数组的字样,然后让他们在数组中搜索一个单词。程序必须显示数组中单词的位置。这就是我的所作所为:
#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;帮助将不胜感激!
答案 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;
}