所以我有一个二维数组用作网格图,其中每个数组 block 都是 map 上的一个空间。
所以在我的 main() 中,我用 初始化了数组“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,它是您是否要在 map 上显示或隐藏它。
因此数组中的一个空格将是“T”,而所有其他空格将是“*”、“X”或“P”。
* 是什么都没有的地方。
所以 if 语句应该说:如果 showTreasure 为假(意味着你想隐藏 'T'):如果不是 'T',则打印数组中的内容;如果不是,则打印 '*'是一个T。
现在我的问题是,即使我用 200 *s 初始化了数组,当我运行程序时它也只打印出 1 *。
最佳答案
如果你的初始化是这一行:
char Map[ROWS][COLS]={'x'};
然后矩阵被初始化为单个 x
后跟 199 个 NULL 字符。
请参阅 https://stackoverflow.com/a/201116/29157 上的精彩解释.
有关 std::fill()
的更多信息,请参阅 https://stackoverflow.com/a/3948314/29157
感谢您的提示,CantChooseUsernames !
关于C++打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22925146/