【发布时间】:2017-12-22 18:03:44
【问题描述】:
当前代码:
const int MAX_CODENAME = 25;
const int MAX_SPOTS = 5;
struct Team {
string TeamName[MAX_CODENAME];
short int totalLeagueGames;
short int leagueWins;
short int leagueLoses;
};
//GLOBAL VARIABLES:
Team league[MAX_SPOTS];
void addTeams(){
int i = 0; //first loop
int j; //second loop
while(i < MAX_SPOTS){
cout << "****** ADD TEAMS ******" << endl;
cout << "Enter the teams name " << endl;
scanf("%s", league[i].TeamName) ;
}
void searchTeam(){
string decider[MAX_CODENAME];
cout << "Please enter the team name you would like the program to retrieve: " << endl;
cin >> decider[MAX_CODENAME];
for(int i = 0; i < MAX_SPOTS; i++){
if(decider == league[i].TeamName){
cout << endl;
cout << league[i].TeamName << endl;
break;
}else{
cout << "Searching...." << endl;
}
}
}
我真的不知道为什么它不起作用,但是我已经包含了所有额外的头文件,例如 和 但是当我输入数据然后尝试搜索时程序崩溃了。我得到了死循环,然后 程序没有响应 然后说 进程返回 255 (0xFF) 。它甚至没有输出 Searching.... 一旦我输入该名称,该程序实际上就放弃了。
如果这可以通过使用指针来优化,那就太好了。
tl;dr 运行时错误,一旦我输入名称,就会导致搜索失败。为了记录,我已检查以确保我输入的名称是有效的。
【问题讨论】:
-
如果你的数组的大小是
MAX_CODENAME,那么最后一个元素在索引MAX_CODENAME - 1 -
string TeamName[MAX_CODENAME];创建一个字符串数组。我认为一个团队只有一个名字:string TeamName;(假设string是std::string) -
使用 iostreams,而不是 scanf。使用 std::vector,而不是数组。
标签: c++ arrays string struct runtime-error