2016-05-14 21 views
-3

私は、異なる行と列のデータを含むテキストファイルStudentRec.txtからデータを読み取って表示するこのコードを書きました。プログラムはうまくコンパイルされますが、正しく実行されません。dev C++のテキストファイルから列と行のデータを読み取る

ifstream infile; 
infile.open("StudentRec.txt"); 

int rows(0); 
int columns(0); 

string lname[rows][columns]; 
int id[rows][columns]; 
int Age[rows][columns]; 
double gpa[rows][columns]; 

infile>>rows>>columns; 
infile>>rows>>columns; 

for(int i=0;i<6;i++) 
{ 
    for(int j=0;j<4;j++) 
    { 
    infile>>lname[i][j]>> id[i][j]>> Age[i][j]>> gpa[i][j]; 
    cout<<lname[i][j]<<"\t"<<id[i][j]<<"\t"<<Age[i][j]<<"\t"<<gpa[i][j]<<endl; 
    } 
} 
+0

「正しく実行されない」とはどういう意味ですか?それはクラッシュしますか?間違った結果を表示する?他に何か?あなたは詳細を教えていただけますか?そして、あなたは入力ファイルの内容を表示できますか?また、[良い質問をする方法について](http://stackoverflow.com/help/how-to-ask)を参照してください。 –

+0

よく..クラッシュします –

+0

なぜ 'rows'と' columns'を2回読み込んでいますか? –

答えて

2

あなたは私のコメントについて考え、どのようにあなたがあなたの質問を向上させることができているが、実際の問題は、これらの行です:いくつかのコンパイラはそれを許可しても、すべてのC++の

int rows(0); 
int columns(0); 

string lname[rows][columns]; 
int id[rows][columns]; 
int Age[rows][columns]; 
double gpa[rows][columns]; 

まずvariable-length arraysを持っていません拡張として。しかし実際の問題は、サイズがの配列がゼロであることです。すべての索引付けは範囲外になり、の未定義の動作になります。

コンパイラは可変長配列は、あなたがrowscolumnsにサイズを読ん後に配列の定義を移動することができます。

関連する問題