我的线性搜索功能仅返回数据中的第一项,而不是搜索的项目。我是C ++的新生,我被禁止使用字符串库,任何人都可以告诉我我做错了吗?
//函数本身......
bool searchDB(const char key[], const Course list[], int size, int (matches) [MAX_CAP], int& matchesSize)
{
bool found = false;
int index;
matchesSize= 0;
for (index = 0; index < size; index++)
{
if (strcmp(key, list[index].name) == 0)
{
matches[matchesSize] = index;
matchesSize++;
found = true;
}
}
return found;
}
//它被称为......
void executeCmd(char cmd, Course list[], int& size)
{
Course course;
switch (cmd)
{
case 's':
int i;
char name[MAX_CHAR];
int matches[MAX_CAP];
int matchesSize;
cout << "Please enter the name of the Course you want to search: ";
getString(name, MAX_CHAR);
if (searchDB(name, list, size, matches, matchesSize))
{
for (i = 0; i < matchesSize; i++)
cout << "Match found: " << list[i].name << '\t' << list[i].task << '\t' << list[i].date << endl;
}
else
{
cout << "No match found!" << endl;
}
break;
答案 0 :(得分:0)
我认为问题在于你打印的内容而不是你所发现的内容。
list [i]只返回位置i列表中的内容。我想你想看一下list [matches [i]],你要在matches数组中返回具有特定索引的项目。
答案 1 :(得分:0)
谢谢,这是正确的,我打印出错误的数组。我的打印行应该是这样的
&LT;&LT; list [matches [i]]。name&lt;&lt; '\ t'&lt;&lt; list [matches [i]]。task&lt;&lt; '\ t'&lt;&lt; list [matches [i]]。date&lt;&lt; ENDL;