C多维数组:我错过了什么吗?

时间:2017-06-05 11:16:06

标签: c arrays multidimensional-array

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

error: '}' expected

然而,当我尝试编译时,我收到此错误:

{{1}}

数组中的第一行显然缺少某种结束括号,虽然我已经多次检查了正确的数组语法,但这似乎是正确的。我错过了什么?这有什么其他问题吗?

3 个答案:

答案 0 :(得分:1)

您的数组类型为char,但您的条目属于char *类型。将双引号"替换为单引号'

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

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

最终结果与此类似:

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

答案 1 :(得分:0)

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

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

希望这有助于:)

答案 2 :(得分:0)

您需要替换“with”,因为char是单个符号。 第二个问题是,你指定错误的长度。

用第二长度替换第一个。

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