【发布时间】:2016-08-12 06:22:30
【问题描述】:
我正在开展一个学校项目,该项目涉及从 .txt 文件中获取预先设计的 25x25 迷宫并将其输入到二维数组中,然后将其打印到控制台上并在迷宫中移动角色。我遇到的主要问题是将字符移动到数组中。我觉得我已经接近了,但我拥有的代码导致程序崩溃。
这是我用来将字符移动到数组中的循环:
int col=0;
ifstream inFile;
inFile.open("maze.txt");
char temp = inFile.get();
while(!inFile.eof())
{
for(int row=0; row<25; row++)
{
while(temp != '\n')
{
boundary[row][col] = temp;
col++;
temp=inFile.get();
}
temp=inFile.get();
}
}
inFile.close();
本质上,关键是将空格和块字符移动到 25x25 字符数组中,方法是将每行中的所有字符放入数组的同一行,直到它到达一个换行符,然后它应该移动到下一个下一行的字符,然后再次开始 while 循环。
它编译得很好,但是程序在它可以移动到任何其他代码之前就崩溃了。 如果您知道如何在不大幅更改格式的情况下修复它,我将不胜感激,因为这只是一小部分,但如果需要,我愿意从头开始。
【问题讨论】:
-
您可以先让您的程序确保它成功打开文件。
-
boundary是如何声明/分配的?它在哪里崩溃,堆栈跟踪是什么?另外,在每次调用 get() 后检查 EOF,而不仅仅是在外部循环中,因为如果输入文件中有任何多余的字符,这将意味着“去加载另一个迷宫”,导致col溢出当前循环配置中的索引。 -
@ScottHunter 我添加了一些代码来验证它,它确实在崩溃之前打开了 .txt 文件。
-
您尝试调试您的程序吗?
标签: c++ for-loop multidimensional-array fstream maze