[英]c++ program crash when inputing text file into array
我是C ++的新手,我正在尝试制作一个可以使用以下格式从ftitikberat.txt输入Matriks的程序:
id [...]-> matriks id
row [id [...]]-> Matriks行数
coloumns [id [...]]-> Matriks coloumns的数量
matriks [id [...]] [row [id [...]]] [col [id [...]]]-> matriks
name [id [...]]-> matriks名称
该程序可以编译,但是当我尝试输入ftitikberat.txt时,它总是崩溃
这是代码:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int row[1000];
int col[1000];
int matriks[1000][4][4];
int id[1000];
int i,j,k;
string name[1000];
ifstream ifile("ftitikberat.txt");
for(i=1; i<=1000; i++)
{
ifile>>id[i]>>name[i]>>row[i]>>col[i];
for(j=1; j<=row[id[i]]; j++)
{
for(k=1; k<=col[id[i]]; k++)
{
ifile>>matriks[id[i]][j][k];
}
}
}
ifile.close();
和文本:
1空1 1 0
2空1 1 0
3空1 1 0
4空1 1 0
。
。 //直到
。
998为空1 1 0
999空1 1 0
1000空1 1 0
我试图将文本更改为:
...
998为空1 1 0 1
...
当我尝试编译并运行它时,程序运行正常,但我不能使用id 999和1000,因为它只是搞砸了,这与我尝试更改id 997(997 null 1 1 0 1)时的文本相同,并且程序没有崩溃,但我不能使用ID 998,999,1000
我也尝试过一一更改最大数组,并且当我将(id和name)的最大数组从1000更改为1001时,程序没有崩溃,但是我不知道为什么这样做
有人可以解释一下为什么该程序(在更改文本/最大数组之前)不起作用吗? 我盯着像小时这样的简单程序,但仍然不知道问题出在哪里:')
数组索引从0
到size-1
,而不是1
到size
。 因此,您在执行以下操作时将访问数组之外的内容:
for(i=1; i<=1000; i++)
它应该是:
for (i = 0; i < 1000; i++)
您的其他循环也应从0
开始,并使用<
而不是<=
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.