字符数组的功能?

时间:2016-03-17 12:43:01

标签: c arrays function

我真的很想通过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;
}

非常感谢任何有助于更好地理解这一点的帮助,谢谢。

4 个答案:

答案 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++