我真的很难通过C来学习编程。我似乎在阅读这本书的练习时抓住了要点,但当我试图实现一些不同的东西时,它就崩溃了,特别是在数组方面。
我用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;
}任何对更好地理解这一点的帮助都将非常感谢,谢谢。
发布于 2016-03-17 20:46:53
内部循环会递增i,直到它超出数组边界
它应该是++j而不是++i
在内部循环的MAX+1迭代之后,你试图访问未分配的内存,这就是为什么你得到错误的原因。
此外,也不需要GameBoard[i][i] = ' ';行,因为当使用j == i时,会在内部循环中处理它
发布于 2016-03-17 20:47:22
您需要更改此行
for (int j = 0; j < MAX; ++i)至
for (int j = 0; j < MAX; ++j)发布于 2016-03-17 20:49:59
将该行中的++i替换为++j
for (int j = 0; j < MAX; ++i)https://stackoverflow.com/questions/36060892
复制相似问题