簡體   English   中英

SIGSEGV,聲明變量時出現段錯誤

[英]SIGSEGV, segmentation fault error when declaring a variable

我收到這個錯誤,我將其范圍縮小到了字符串teamTemp; 線。 從閱讀其他文章中我了解到,這通常是由於沒有聲明變量而導致的。 在這種情況下,當我聲明一個變量時會出錯。 即使注釋掉了其余的冒泡排序,它也會對該變量拋出錯誤。

#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;
}

Leagues.txt美國聯賽國家聯賽國家聯賽美國聯賽美國聯賽國家聯賽美國聯賽國家聯賽國家聯賽美國聯賽國家聯賽美國聯賽美國聯賽國家聯賽美國聯賽國家聯賽美國聯賽國家聯賽美國聯賽國家聯賽美國聯賽沒有冠軍美國聯賽美國聯賽聯賽聯賽聯賽聯賽聯賽聯賽聯賽

teams.txt Anaheim Angels亞利桑那響尾蛇約克洋基隊沒有勝利者奧克蘭田徑費城田徑費城費城人匹茲堡海盜舊金山巨人聖路易斯紅雀多倫多藍鳥華盛頓參議員

世界大賽冠軍只是每年贏得世界大賽的球隊的清單。

獲勝者是一個大小為114的數組,但i最多可以訪問114,它訪問元素115,該元素位於數組的末尾。

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

最重要的是,您至少有幾個地方要讀入數組,但是不清楚您是否將輸入限制為數組的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM