在数组中搜索字符串 我正在制作一个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循环只是一次又一次地重复。这听起来不像是崩溃。哦。我只是不明白为什么它不执行我的搜索函数。我对编程非常陌生,不知道我是否遗漏了什么,或者编码是否仅仅是错的什么是数据
?不要使用全局变量。什么是如果找不到元素,是否返回?