c - 在 C 中初始化 3 维字符数组

标签 c arrays multidimensional-array initialization

我希望你们能帮我解决我遇到的问题。

对于一个小项目,我必须初始化一个 3 维字符数组, 当我在 main 中初始化它时,它可以正常工作,所以我认为 问题或多或少在我的键盘和椅子之间 ;)

我已经将初始化从 main 分离到一个单独的 .c 我会给你一瞥:

/*database.c*/
#define PHRASE_NUM 6
#define PHRASE_LEN 100
#define PHRASE_TYPES 2

void initDatabase(char database[][PHRASE_TYPES][PHRASE_LEN]) {

/* At this point I get the error "error: expected expression before ']' token" */
database[][PHRASE_TYPES][PHRASE_LEN]= 
{
        {{"string 1.1"},{"string 1.2"}},
        {{"string 2.1"},{"string 2.2"}},
        {{"string 3.1"},{"string 3.2"}},
        {{"string 4.1"},{"string 4.2"}},
        {{"string 5.1"},{"string 5.2"}},
        {{"string 6.1"},{"string 6.2"}}
};

}

 /*main.c*/
#include "database.h"
int main (void)
{
    char database[PHRASE_NUM][PHRASE_TYPES][PHRASE_LEN];
    initDatabase(database);

    printf(database[1][0]);
    /* should return string 2.1  */

    return 0;
}

因此,正如上面评论中所述,我收到以下错误:“错误:']' 标记前的预期表达式”。 我已经检查了我是否对通用 init 做错了什么。数组,但如果我直接在 main 中实现它,这将起作用。

最佳答案

只能在声明时初始化数组,之后不能。

你可以做的是:

void initDatabase(char database[][PHRASE_TYPES][PHRASE_LEN]) {
    char temp_array[][PHRASE_TYPES][PHRASE_LEN]= 
    {
            {{"string 1.1"},{"string 1.2"}},
            {{"string 2.1"},{"string 2.2"}},
            {{"string 3.1"},{"string 3.2"}},
            {{"string 4.1"},{"string 4.2"}},
            {{"string 5.1"},{"string 5.2"}},
            {{"string 6.1"},{"string 6.2"}}
    };
    memcpy(database, temp_array, sizeof(temp_array));
}

关于c - 在 C 中初始化 3 维字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12755052/

相关文章:

C:LU完全旋转分解和矩阵求解器;有些不对劲

c - 用户输入后出现段错误

javascript - 从数组中选择随机对象并递减值

MongoDB:查询嵌套数组

python - 如何使用 np.newaxis?

c - gdb 调试多个源文件

c - 数组表达式未转换为指针 当字符串字面量用于初始化字符数组时

PHP数组循环+MySQL数据

php - 如何将文本 append 到特定的 php 数组值

c - C中如何使用指针表达式访问二维数组的元素?