创建多维文本数组(是否可能?)

时间:2014-01-24 04:47:00

标签: c arrays text

如何创建多维文本数组?但在那之前,这样的事情是否可能?

我正在尝试创建一个使用箭头键的程序菜单。这是我到目前为止所做的:

#include <stdio.h>
main()
{
    char menitem[3][32];
    menitem[1][0] = "Option 1 ";
    menitem[2][0] = "Option 2 ";
    menitem[3][0] = "Option 3 ";
    printf("%s\n%s\n%s", menitem[1], menitem[2], menitem[3]);
}

(我知道。现在还没有完成。)我不断收到如下错误:

[Warning] assignment makes integer from pointer without a cast [enabled by default]

为什么会这样? (我正在使用DevC ++)。提前谢谢!

额外信息:

我使用(i):menitem [i] [32]

32是文本的实际大小分配。我会使用[i]作为下标/索引,以便我可以轻松地操作它而不必创建多个条件。

3 个答案:

答案 0 :(得分:2)

应该是这样的:

#include <stdio.h>
main()
{
    char menitem[3][32];
    menitem[0] = "Option 1 ";
    menitem[1] = "Option 2 ";
    menitem[2] = "Option 3 ";
    printf("%s\n%s\n%s", menitem[0], menitem[1], menitem[2]);
}

因为,在二维数组中,使用2个索引将代表一个char,这就是你得到错误的原因

答案 1 :(得分:1)

您可以在初始化时执行此操作:

char menuitem[][32]={{"option 1 "},{"option 2 "}, {"option 3 "}};

  char menuitem[3][32]; 
  strcpy(menuitem[0],"Option 1");
  strcpy(menuitem[1],"Option 2");
  strcpy(menuitem[2],"Option 3");

另一种选择是将menuitem声明为指针数组

  char *menuitem[3]; 

  menuitem[0]="Option 1";
  menuitem[1]="Option 2";
  menuitem[2]="Option 3"; 

但是在这种情况下,内存不是连续的,第二个维度不是32,而是为'\ 0'指定+1单元格的字符串的长度

答案 2 :(得分:0)

只有一个问题!

您已将Char多维数组声明为

char menitem [3] [32];

尝试分配如下,

menitem[1][0] = "Option 1 ";
menitem[2][0] = "Option 2 ";
menitem[3][0] = "Option 3 ";

由于数组维数为[3](即[0],[1],[2]),但您正在访问menitem [3] !!这有用吗?