我正在尝试编写地下城抓取游戏,并且编译器无法正确打印我的网格,由于某种原因,它仅打印出每一行的第一个元素,而没有给出任何错误消息。
#include <iostream>
using namespace std;
int main(){
char myGrid[7][10]{{'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
{'.', '.', 'P', '.', '.', '.', '.', 'T', '.', '.'},
{'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
{'.', '.', '.', '.', 'T', '.', '.', '.', '.', '.'},
{'.', '.', '.', '.', '.', '.', 'T', '.', '.', '.'},
{'.', '.', 'T', '.', '.', '.', '.', '.', '.', '.'},
{'.', '.', '.', '.', 'X', '.', '.', '.', '.', '.'}};
for(int i = 0; i < 7; i++){
for(int j = 0; j < 10; j++){
cout << myGrid[i][j] << " ";
if(j = 9){
cout << endl;
}
}
}
}
这是我从控制台获得的输出:
。
。
。
。
。
。
。
答案 0 :(得分:3)
问题出在以下一行:if(j = 9)
。您需要一个双等于比较。在这里,您要分配给j
,这将使其跳过该行的其余部分。
主动提供的建议:
sizeof
用于数组,或至少使用常量值,例如const auto rows = 7;
。std::vector
或std::array
。如果这样做,则可以使用myGrid.size()
和myGrid[row].size()
来解决#1。'\n'
rather than std::endl
。