2017-06-05 44 views
0

我目前正在学习C语言,并且我刚刚写了一个程序草案,允许用户围绕基于角色的迷宫/路径移动玩家。我将迷宫/路径构建为多维字符数组,并通过替换数组中的某些字符来控制玩家的位置。这里是多维数组我已经初始化:C多维数组:我错过了什么?

char maze[5][7] = { 
    {"_", "_", "_", "_", "_"}, 
    {"|", " ", " ", " ", "|"}, 
    {"|", " ", "|", " ", "|"}, 
    {"|", " ", "|", "_", "|"}, 
    {"|", "_", " ", " ", "|"}, 
    {"|", " ", "|", " ", "|"}, 
    {"|", "_", "_", "_", "|"} 
}; 

然而,当我尝试编译,我得到这个错误:

error: '}' expected 

数组中的第一行显然是缺少某种闭架的,尽管我多次检查了正确的数组语法,并且这看起来是正确的。我错过了什么?还有其他问题吗?

+1

“|”是一个字符串文本,它具有字符数组的类型。是一个char类型的字符文字,你需要使用字符文字来初始化你的数组而不是字符串文字,并且数组应该被声明为char maze [7] [5],它有7个“rows”,5“列“ –

+1

首先,你得到的尺寸是错误的,然后你有一个*字符数组*数组*阵列,而不是字符串。最后,C没有”多维数组“,它只有阵列数组。 ..) –

+1

C数组是** row major **所以你的初始化方法的大小和类型都是错误的 – StoryTeller

回答

0

您给数组的错误维数maze[5][7]它是行和列,您的定义是7行和5列。并且您将每个元素都输入为一个字符串。它应该是这样的单引号内的字符,如'a'。如果你用双引号定义它将变成字符串。这将解决您的问题

char maze[7][5] = { 
{'_', '_', '_', '_', '_'}, 
{'|', ' ', ' ', ' ', '|'}, 
{'|', ' ', '|', ' ', '|'}, 
{'|', ' ', '|', '_', '|'}, 
{'|', '_', ' ', ' ', '|'}, 
{'|', ' ', '|', ' ', '|'}, 
{'|', '_', '_', '_', '|'} 
}; 

希望这有助于:)

+0

更好的答案是解释他为什么要这样做,为什么他的代码 – tilz0R

+0

我觉得评论已经这么做了 –

+1

@VishwajeetVishu一个很好的答案是自成一体的,但你当然可以参考现有的评论。 –

2

你的阵列是char型的,但你的条目是char *类型。将双引号"替换为单引号'

单引号表示char本身,其中双引号表示字符序列(字符串),因此编译器会尝试将\0字符添加到结尾。

另一方面,您必须交换值5和7以进行初始化。

最终的结果是与此类似:。

//7 big entries with 5 values 
char maze[7][5] = { 
    {'_', '_', '_', '_', '_'}, 
    {'_', '_', '_', '_', '_'}, 
    {'_', '_', '_', '_', '_'}, 
    {'_', '_', '_', '_', '_'}, 
    {'_', '_', '_', '_', '_'}, 
    {'_', '_', '_', '_', '_'}, 
    {'_', '_', '_', '_', '_'}, 
}; 
0

您需要更换“”因为一个字符是一个单点登录 第二个问题是,您指定的长度错误

将第一个替换为第二个长度

char maze[7][5] = { 
    {'_', '_', '_', '_', '_'}, 
    {'|', ' ', ' ', ' ', '|'}, 
    {'|', ' ', '|', ' ', '|'}, 
    {'|', ' ', '|', '_', '|'}, 
    {'|', '_', ' ', ' ', '|'}, 
    {'|', ' ', '|', ' ', '|'}, 
    {'|', '_', '_', '_', '|'} 
};