在数组中搜索字符串 我正在制作一个C++的电话簿程序,而且我的搜索功能转移到了我的主要功能中。当我编译它并搜索名称时,它会使程序崩溃

在数组中搜索字符串 我正在制作一个C++的电话簿程序,而且我的搜索功能转移到了我的主要功能中。当我编译它并搜索名称时,它会使程序崩溃,c++,C++,搜索功能: int search(string name){ for(int i=0; i<counter; i++){ if(data[i][0] == name){ return i; } else{ cout << "Name not found" << endl; } } } int main(){ bool d

搜索功能:

int search(string name){
    for(int i=0; i<counter; i++){
        if(data[i][0] == name){
        return i;
        }
            else{
            cout << "Name not found" << endl;
            }
    }

}
int main(){
    bool done = false;
    int choice;
    string name;
    string areaCode;
    string number;

    load_contacts("contacts.txt");

    cout << "Welcome to AddressBook" << endl;

    while(!done){

        cout << "What would you like to do?" << endl;
        cout << "1) Display all contacts" << endl;
        cout << "2) Add a contact" << endl;
        cout << "3) Remove a contact" << endl;
        cout << "4) Search a contact" << endl;
        cout << "5) Exit" << endl;
        cin >> choice;

        switch (choice){

            case 1:
            display_contacts();

            break;

            case 2: 
            add_contacts(name, areaCode, number);
            cout << "Contact Added!";
            cout << endl;


            break;

            case 3:
            cout << "Name to remove: ";
            cin >> name;  
            remove_contacts(name);          

            break;

            case 4:
            cout << "Name to search: ";
            cin >> name;
            search(name);

            break;

            case 5: cout << "Good bye." << endl;
            done = true;

            break;
        }
    }
}
int搜索(字符串名称){

对于(inti=0;i来说,您发布的代码有几个问题,主要是由于调用了未定义的变量

1:对于您的搜索方法,
计数器
不知从何而来,被用作循环的数字限制器

2:同样在搜索方法中,2D数组
数据也未定义,除非它是从
load\u contacts
方法中设置的全局变量,而该变量未显示,因此当前您正在搜索一个不存在的2D数组

3:您的
“找不到名称”
消息位于方法中for循环的
else
语句中,因此每次循环找不到名称时都会执行该消息。您可能希望将该消息移到循环外打印,然后返回错误号,可能
-1
以稍后处理

4:您的
search
方法是返回类型
int
,但是在
main
中,您没有将返回值分配给任何要使用的变量,因此如果搜索成功,将不会发生任何事情


如果我对其中任何一个都不正确,请告诉我,但我会首先关注明显的错误,看看它们是否导致了崩溃。

您能否提供一些详细信息,说明它是如何“使程序崩溃的”我的主函数中的while循环只是一次又一次地重复。这听起来不像是崩溃。哦。我只是不明白为什么它不执行我的搜索函数。我对编程非常陌生,不知道我是否遗漏了什么,或者编码是否仅仅是错的什么是
数据
?不要使用全局变量。什么是如果找不到元素,是否返回?