我真的很想通过C学习编程。我似乎在阅读本书的练习时得到了一些东西,但是第二次尝试实现不同的东西,特别是在数组方面。 / p>
我正在制作一个带有2D角色阵列的简单游戏。它应该是11x11。我正在尝试编写一个函数来将数组的每个索引设置为一个空格' '开始。我的代码编译然后我得到了一个'核心转储'当我运行它。这是代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/*-------- GLOBAL FUNCTIONS --------*/
// Clear the Screen
void clear()
{
system("clear"); // For Linux/iOS
}
//---------- Creat Array(Game Board)
#define MAX 11 // Max number of characters in each row and column of array
char GameBoard[MAX][MAX];
// Clear Each Space in Array with Empty ("") Space
void ClearBoard(char GB[MAX][MAX])
{
for (int i = 0; i < MAX; ++i)
{
GameBoard[i][i] = ' ';
for (int j = 0; j < MAX; ++i)
{
GameBoard[i][j] = ' ';
}
}
}
int main()
{
ClearBoard(GameBoard);
return 0;
}
非常感谢任何有助于更好地理解这一点的帮助,谢谢。
答案 0 :(得分:3)
你的内部循环递增i
,直到它超出数组边界
应该是++j
而不是++i
在内循环的MAX+1
次迭代之后,你试图访问未分配的内存,这就是你得到错误的原因。
此行GameBoard[i][i] = ' ';
也是不必要的,因为j == i
答案 1 :(得分:2)
您需要更改此行
for (int j = 0; j < MAX; ++i)
到
for (int j = 0; j < MAX; ++j)
答案 2 :(得分:1)
将<{1}}替换为
行中的++i
++j
答案 3 :(得分:0)
GameBoard[i][i] = ' ';
这条线没有任何意义。删除它。
for (int j = 0; j < MAX; ++i)
应为j++
。