2013-08-28 37 views
0

運行下面的代碼時,我得到一個分段錯誤:未知分段故障

const int SENSORS = 65; 
static float coefficient[SENSORS][6]; 
const int NUMSUBSYSTEM = 6; 
const int ALLSENSORS = SENSORS * NUMSUBSYSTEM; 
using namespace std; 

int row = 0; 
static int outputError = -1; //static to retain value 

ifstream equationFile("equation.txt"); 

static string sensorNameEquation[ALLSENSORS]; 
static float coefficientOverride[ALLSENSORS][6]; //static to keep large array off stack 
static string dependantSensor[ALLSENSORS]; //static to keep large array off stack 
static float baseTemp[ALLSENSORS]; //static to keep large array off stack 

printf("Total sensors: %d\n", ALLSENSORS); 

row = 0; 
if(equationFile) 
{ 
    while(equationFile >> 
     sensorNameEquation[row] >> 
     coefficientOverride[row][0] >> coefficientOverride[row][1] >> 
     coefficientOverride[row][2] >> coefficientOverride[row][3] >> 
     coefficient[row][4] >> oefficient[row][5] >> 
     dependantSensor[row] >> baseTemp[row]) 
    { 
     row++; 
     printf("sensors: %d\n", row); 
    } 

    equationFile.close();//done reading from file...close it 
} 

它到達線的方程文件102然後賽格故障。任何想法,爲什麼會這樣?

+2

方程文件的第102行有什麼?它是最後一行嗎? – olevegard

+0

while循環可能會增加行數389 –

+0

與其他行沒什麼區別。公式文件的格式如下所示:ECSBSensor56 0 0 0 0 0 0 0 0 ECSBSensor57 0 0 0 0 0 0 0 0 ECSBSensor58 0 0 0 0 0 0 0 0 ECSBSensor59 0 0 0 0 0 0 0 0 ECSBSensor60 0 0 0 0 0 0 0 0 ECSBSensor61 0 0 0 0 0 0 0 0 310行 – user2494298

回答

1

看起來你正在走出係數數組的界限,看起來應該與其他人一起聲明爲靜態浮動係數[ALLSENSORS] [6];

+0

我從SENSORS更改爲ALLSENSORS,並在頭文件中有係數數組,我忘了改變....這固定它,不能相信我沒有抓住.... THANKYOU !!!!!!! – user2494298

1

您的陣列coefficient只有SENSORS(65)元素,但在第102行中,您已經讀取了102個元素。 (您在每行後遞增row

在讀取多於SENSORS元素之前,需要某種方法來停止循環。