簡體   English   中英

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

[英]Strange characters appearing in 2D Char Array

我正在編寫一個利用'網格'的游戲,我使用2維結構數組創建,其中包含char值和布爾值。 在我的程序的.h文件中,我聲明了struct並創建了網格。

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]是一個讓它在開始時崩潰的網格。 我嘗試使用調試器,但它無法告訴我任何有用的信息。

你正在運行數組的末尾

Tile grid [6][5]; 需要是Tile grid [7][6];

或者你只需​​要循環到i < 6j < 5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM