二维数组的最后一行覆盖其他行

时间:2020-03-08 03:49:41

标签: c++ arrays multidimensional-array

好的,我在这里遇到一个奇怪的问题。我正在开发一个程序,其中从文件中读取由各种字符表示的“迷宫”并由计算机解决。

现在,我正在尝试将迷宫读取到2d数组中。我现在也将迷宫打印了两次,一次是在将其读入内存时,另一次是为了确保所有内容正确保存。第一次打印正确,但是第二次打印显示数组的最后一行以某种方式覆盖了所有其他行。任何访问数组特定值的尝试都会确认这一点。为了让您了解我在说什么,这是迷宫应该是什么样子,以及第一次印刷时显示的内容:

S#.#...##.G
..##..#..#.
.#..#.#....
...##..#...
..#.....###
#...#...#..
..#..#.#...
.####.....#
...##.##...
.#....####.
###........

同时,这是第二次打印显示的内容,以及任何访问阵列的尝试都会告诉您:

###........
###........
###........
###........
###........
###........
###........
###........
###........
###........
###........

显然,这让我很沮丧。无论如何,这是读取和打印数组的代码:

ifstream input(fileLocation);
//get the maze dimensions
input >> dimX;
input >> dimY;
maze = new char[(dimX - 1), (dimY - 1)]; //Allocate memory for the maze
//read the maze into memory and prints it for reference
cout << "Initial Maze:" << endl;
for (int i = 0; i < dimY; i++) {
    for (int j = 0; j < dimX; j++) {
        input >> maze[i, j];
        cout << maze[i, j];
        //recognizing the start space
        if (maze[i,j] == 'S') {
            currPos = &maze[i,j];
        }
        else if (maze[i, j] == 'G') { //recognizing the end space
            goalX = j;
            goalY = i;
        }
    }
    cout << endl;
}
input.close();


//second print for test

for (int i = 0; i < dimX; i++) {
    for (int j = 0; j < dimY; j++) {
        cout << maze[i, j];
    }
    cout << endl;
}

任何帮助将不胜感激。如果您需要更多信息,请随时与我们联系。

0 个答案:

没有答案