2014-02-25 51 views
0
#include<iostream> 
#include<fstream> 
using namespace std; 


int main(){ 
     ifstream infile; 
     int X,Y; 
     char ch; 
     infile.open("input.txt"); 
     int** intarray = new int*[X]; 
     for(int i = 0; i < X; ++i) 
     intarray[i] = new int[Y]; 
      for(int k=0; k<16; ++k){ 
      for(int j=0; j<24; ++j){ 
       infile >> intarray[k][j]; 
       cout << intarray[k][j]<<" "; 
      } 
      cout<< endl; 
      } 

      infile.get(ch); 

    infile.close(); 

} 

讀到這裏是我寫的,到目前爲止,該陣列是動態聲明,但是當我運行,它出來錯誤說分割故障(核心轉儲)。 對於輸入文件,第一行是4個數字:#rows #columns min-value max-value,我需要將它們打印出來並將整數放入第二行開始的二維數組中。我怎樣才能做到這一點?C++調試 - 從文件和輸出二維數組

+1

當您將它們用作數組的大小(以及作爲for循環的結束條件)時,未使用'X'和'Y' ...未定義的行爲。 – 0x499602D2

+0

爲什麼不使用矢量呢? – Eejin

+0

但是,這不是我們使用動態數組的原因嗎?我們不知道數組的大小。 – user2836989

回答

0

通常你會從預先確定大小的數組開始,然後在插入更多元素時增加容量。這意味着,當一個元素暫掛插入數組但是數組被填充到其預設容量時,您分配一個新的更大的內存塊,將元素從原始數組複製到新數組,並將新元素delete[]原始數組並將其分配給新數組。

但是,這需要內存管理,這在C++中通常不是一種好的做法。原因是存在諸如std::vector之類的改進,這是圍繞基本上如上所述的動態數組的包裝。但是因爲你是初學者,所以我會說先培養與低層次相關的知識,然後繼續努力。