在C中创建具有硬编码值的字符串数组

时间:2015-04-24 09:14:44

标签: c arrays pointers dictionary

我创建了带有硬编码值的字符串数组,如下所示:

char dev_string[3][3][15] = {{"item01","item02","item03"},
                                 {"item11","item12","item13"},
                                 {"item21","item22","item23"},
                      };

int main()
{

   printf("string 00 = %s \n",dev_string[0][0]);
   printf("string 01 = %s \n",dev_string[0][1]);
   printf("string 02 = %s \n",dev_string[0][2]);


   printf("string 10 = %s \n",dev_string[1][0]);
   printf("string 11 = %s \n",dev_string[1][1]);
   printf("string 22 = %s \n",dev_string[1][2]);


   printf("string 20 = %s \n",dev_string[2][0]);
   printf("string 21 = %s \n",dev_string[2][1]);
   printf("string 22 = %s \n",dev_string[2][2]);

    return 0;
}

目的是在最后用C创建一个字典。而不是硬编码我想要一个基于指针的实现,因为将来我必须继续添加这个字符串的项目。 更多我想使用一些索引访问这些字符串,我认为我可以通过提供行号(0,1或2)。 我没有用指针做正确的方法。使用指针(单个或指向二维的指针)的其他方便方法是什么?

1 个答案:

答案 0 :(得分:0)

char (*sensor_string)[3][3];

for (int i=0; i < 3; ++i) {
    for (int j=0; j < 3; ++j) {
        sensor_string[i][j] = malloc(sizeof(*sensor_string[i][j]) * (strlen("item") + 3));
        strcpy(sensor_string[i][j], "item");
        char* num = malloc(sizeof(*num) * 3);
        sprintf(num, "%d", (i*3 + j + 1));
        strcat(sensor_string[i][j], num);
    }
}