2D Char Array中出现奇怪的字符

时间:2014-04-29 15:47:31

标签: c++ arrays

我正在编写一个利用'网格'的游戏,我使用2维结构数组创建,其中包含char值和布尔值。在我的程序的.h文件中,我声明了结构并创建了网格。

struct Tile
{
    char letter;
    bool active;
};

Tile grid [6][5];

在我的.cpp文件中,我初始化网格,以便所有值都为空。

 for (int i = 0; i < 7; ++i)
    {
        for (int j = 0; j < 6; ++j)
        {
            grid[i][j].active == false;
            //grid[i][j].letter = '.';
            //it always crashes when i try doing the above line
        }

    }

打印网格printGrid的函数位于

之下
for (int i = 0; i < 7; ++i)
    {
        for (int j = 0; j < 6; ++j)
        {
            cout << i;
            //the above statement is for debugging purposes so that I can see
            //which column easier
            std::cout << grid[i][j].letter;
        }
        std::cout << std::endl;
    }
    cout << "1 2 3 4 5 6" << endl;

现在,最初的目标是将默认的.letter值设为'。'。但出于某种原因,当我试图这样做时,会有灾难性的后果;屏幕填满了人物移动如此之快我无法完全看到它们是什么(我记得一些心和笑脸),以及令人讨厌,快速的哔哔声。所以我决定退出那条注释线。

当我在没有该行的情况下运行程序时,由于某种原因,“网格”总是在某些位置显示字符,没有来自用户的任何输入,或者没有我明确声明该位置的任何值。例如,左边和底行的第一列的点总是有一个字符(grid [6] [5] .letter)。每次运行程序时它都会发生变化,我看到它的范围从心脏到字母A到西班牙语'n'(带有〜超过它的那个)。

我心想,“嘿,因为网格[6] [5]是总是错误的点,我只会声明那些个别地点的.letter值为空白('')!”。那没用。

我不知道为什么这一个地方给我带来了麻烦。还有其他区域会出现异常,但我可以通过将其.letter值设置为空白来中和它们。如果有人知道如何解决这个问题,请求

编辑:出现在网格[6] [0],网格[6] [1],网格[6] [5]和网格[6] [4]中的其他异常字符都使我的程序如果我将它们设置为空白(''),则在后续阶段崩溃;然而,消隐网格[6] [5]是一个让它在开始时崩溃的网格。我尝试使用调试器,但它无法告诉我任何有用的信息。

1 个答案:

答案 0 :(得分:2)

你正在数组的末尾运行

Tile grid [6][5];必须为Tile grid [7][6];

或者您只需要循环到i < 6j < 5