需要帮助将 .txt 字符分配到二维数组中。 C++
Need help assigning .txt characters into a 2d array. C++
我正在做一个学校项目,该项目涉及从 .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 循环。
它编译得很好,但是程序在移动到任何其他代码之前就崩溃了。
如果您知道如何在不彻底改变格式的情况下修复它,我将不胜感激,因为这只是一小部分,但如果需要,我愿意从头开始。
在每一行之后(在 while(temp != '\n')
循环之前或之后)将 col
重置为零。
您输入的文本文件中的列数可能多于您在数组中定义的列数。更好的方法是在文本文件中定义数组的大小,然后使用 malloc 进行分配,但如果您知道列和行的确切大小不会改变,那么您可以使用静态定义的数组大小。此外,您不需要 for 循环。
#define max_col = 25;
#define max_row = 25;
char boundary[max_row][max_col];
int col=0;
int row=0;
ifstream inFile;
inFile.open("maze.txt");
char temp = inFile.get();
while(!inFile.eof())
{
boundary[row][col] = temp;
if(++col > max_col || temp == '\n') {
col = 0;
if(++row > max_row) return -1; // depends how you want to handle
}
temp=inFile.get();
}
inFile.close();
我正在做一个学校项目,该项目涉及从 .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 循环。
它编译得很好,但是程序在移动到任何其他代码之前就崩溃了。 如果您知道如何在不彻底改变格式的情况下修复它,我将不胜感激,因为这只是一小部分,但如果需要,我愿意从头开始。
在每一行之后(在 while(temp != '\n')
循环之前或之后)将 col
重置为零。
您输入的文本文件中的列数可能多于您在数组中定义的列数。更好的方法是在文本文件中定义数组的大小,然后使用 malloc 进行分配,但如果您知道列和行的确切大小不会改变,那么您可以使用静态定义的数组大小。此外,您不需要 for 循环。
#define max_col = 25;
#define max_row = 25;
char boundary[max_row][max_col];
int col=0;
int row=0;
ifstream inFile;
inFile.open("maze.txt");
char temp = inFile.get();
while(!inFile.eof())
{
boundary[row][col] = temp;
if(++col > max_col || temp == '\n') {
col = 0;
if(++row > max_row) return -1; // depends how you want to handle
}
temp=inFile.get();
}
inFile.close();