SIGSEGV,声明变量时的分段错误错误



我收到此错误,我已将其缩小到字符串 teamsTemp; 行。我从阅读其他帖子中了解到,这通常是由于没有声明变量而导致的。在这种情况下,当我声明一个变量时,它出错了。即使注释掉了气泡排序的其余部分,它也会在该变量上抛出错误。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
ifstream WinnersIn;     
ifstream TeamsIn;           
ifstream LeagueIn;        
string inputWinner;
string inputTeam;
string inputLeague;
int wins[30] = {0};
string teams[30];
string winner[114];
string league[30];
int t = 0;
int w = 0;
int z = 0;
int year = 1903;
int j;
TeamsIn.open("Teams.txt");
LeagueIn.open("Leagues.txt");
WinnersIn.open("WorldSeriesWinners.txt");
//Saving teams into an array
while (getline(TeamsIn, inputTeam))
{
teams[t] = inputTeam;
t++;
}
//Saving Winners into an array
while (getline(WinnersIn, inputWinner))
{
winner[w] = inputWinner;
w++;
}
//Saving division Winner names into an array
while (getline(LeagueIn, inputLeague))
{
league[z] = inputLeague;
z++;
}
//Nested for loop to match winning team and their league then output
for (int i=0; i < 115; i++)
{
for (z=0; z < 30; z++)
{
if (winner[i] == teams[z])
{
cout << year << " " << winner[i] << " " << league[z] << endl;
year++;
}
}
}
//Saving number of wins for each team into an array
for (int i = 0; i < 115; i++)
{
for (z=0; z < 30; z++)
{
if (winner[i] == teams[z])
{
wins[z] = wins[z] + 1;
}
}
}

//Sorting by number of wins
for (int i = 0; i < 29; i++)
{
for (int j = 0; j < 30; j++)
{
if (wins[i] < wins[j]) 
{
int winsTemp;
string teamsTemp;
/*winsTemp = wins[i];
wins[i] = wins[j];
wins[j] = winsTemp;
teamsTemp = teams[i];
teams[i] = teams[j];
teams[j] = teamsTemp;*/
}
}
}
TeamsIn.close();
LeagueIn.close();
WinnersIn.close();
return 0;
}

联赛.txt 美国联赛 全国联赛 全国联赛 美国联赛 美国联赛 全国联赛 美国联赛 全国联赛 全国联赛 美国联赛 全国联赛 美国联赛 美国联赛 全国联赛 美国联赛 全国联赛 全国联赛 美国联赛 全国联赛 全国联赛 美国联赛 没有赢家 美国联赛 美国联赛 全国联赛 全国联赛 全国联赛 全国联赛 美国联赛 美国联赛

团队.txt 阿纳海姆天使 亚利桑那钻石背 亚特兰大勇士队 巴尔的摩金莺 波士顿美国人 波士顿勇士队 波士顿红袜队 布鲁克林道奇队 芝加哥小熊队 芝加哥白袜队 辛辛那提红人 克利夫兰印第安人 底特律老虎队 佛罗里达马林鱼 堪萨斯城皇家队 洛杉矶道奇队 密尔沃基勇士队 明尼苏达双胞胎 纽约巨人队 纽约大都会队 纽约洋基队 没有赢家 奥克兰田径 费城田径 费城费城人队 匹兹堡海盗 旧金山巨人队 圣路易斯红雀队 多伦多蓝鸟队 华盛顿参议员

世界大赛冠军只是每年赢得世界大赛的球队名单。

获胜者是一个大小为 114 的数组,但i可以达到 114,它访问元素 115,这是数组的末尾。

if (winner[i] == teams[z])

最重要的是,您至少有几个地方可以读取数组,但不清楚您是否将输入限制在数组的大小上。

相关内容

  • 没有找到相关文章

最新更新