我正在开展一个学校项目,该项目涉及从.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循环。
它编译得很好,但是程序在移动到任何其他代码之前崩溃了。 如果您知道如何修改它而不会大幅改变格式,我会很感激,因为这只是一小部分,但如果需要,我可以从头开始。
答案 0 :(得分:3)
在每行之后(col
循环之前或之后)将while(temp != '\n')
重置为零。
答案 1 :(得分:0)
您的输入可能在文本文件中包含的列数多于您在数组中定义的列数。更好的方法是在文本文件中定义数组的大小,然后使用malloc进行分配,但如果您知道列的确切大小并且行不会更改,则可以使用静态定义的数组大小。你也不需要for循环。
class C_File:
file_count = 0
def __init__(self, file_name):
self.file_name = file_name
C_File.file_count += 1
def headerFile(self, header_name, functions):
self.header_name = header_name
self.functions = []
for x in functions:
self.variables.append(x)