我的线性搜索功能C ++出现问题

时间:2014-07-15 19:35:16

标签: c string search linear arrays

我的线性搜索功能仅返回数据中的第一项,而不是搜索的项目。我是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;

2 个答案:

答案 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;