繁体   English   中英

将文本文件输入数组时,c ++程序崩溃

[英]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时,程序没有崩溃,但是我不知道为什么这样做

有人可以解释一下为什么该程序(在更改文本/最大数组之前)不起作用吗? 我盯着像小时这样的简单程序,但仍然不知道问题出在哪里:')

数组索引从0size-1 ,而不是1size 因此,您在执行以下操作时将访问数组之外​​的内容:

for(i=1; i<=1000; i++)

它应该是:

for (i = 0; i < 1000; i++)

您的其他循环也应从0开始,并使用<而不是<=

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM