C ++打印阵列

时间:2014-04-07 23:52:30

标签: c++ arrays printing

所以我有一个二维数组我用作网格图,其中每个数组块都是地图上的空格。

所以在我的主要()中我已经初始化了数组' Map'与

char Map[ROWS][COLS]={'x'};

ROWS = 10且COLS = 20

稍后我用

调用函数PrintMap
void PrintMap(const char Map[ROWS][COLS], const bool showTreasure)
{


for (int countr=0; countr<ROWS;countr++){
    for (int countc=0; countc<COLS;countc++){      //print map
            if (!showTreasure){
                    if (Map[countr][countc]!='T')
                            cout << Map[countr][countc];
                    else
                            cout << '*';
            } else {

                    cout << Map[countr][countc];

            }
    }
cout << endl;
}



}

网格上的一个空间是游戏中的宝藏或目标所在的位置。在PrintMap的参数中是bool showTreasure,这是你想要一个&#39; T&#39;要显示在地图上,或者如果要隐藏它。

因此阵列中的一个空格将是一个&#39; T&#39;而所有其他人将是&#39; *&#39;,&#39; X&#39;或&#39; P&#39;。

*是无所不在的地方。

所以if语句应该说:如果showTreasure为false(意味着你想要隐藏&#39; T&#39;):如果它不是&#,你打印数组中的内容39; T&#39;或打印&#39; *&#39;如果是T。

现在我的问题是,即使我已经用200 * s初始化了数组,当我运行程序时它只打印出1 *。

1 个答案:

答案 0 :(得分:2)

如果你的初始化是这一行:

char Map[ROWS][COLS]={'x'};

然后将矩阵初始化为单个x,后跟199个NULL字符。

请参阅https://stackoverflow.com/a/201116/29157的优秀解释。

有关std::fill()的详情,请参阅https://stackoverflow.com/a/3948314/29157

感谢您的提示,CantChooseUsernames