我写了这段代码,它从文本文件StudentRec.txt
读取数据,其中包含不同行和列的数据并显示它。该程序编译得很好,但没有正确执行。
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 :(得分:2)
当您考虑我的评论以及如何改进您的问题时,实际问题是以下几点:
int rows(0);
int columns(0);
string lname[rows][columns];
int id[rows][columns];
int Age[rows][columns];
double gpa[rows][columns];
首先,C ++没有variable-length arrays,但有些编译器允许它作为扩展。但真正的问题是你正在创建大小零的数组。所有索引都将超出范围,并导致未定义的行为。
如果编译器允许可变长度数组,则在之后将数组的定义移动到,并将大小读入rows
和columns
。