如何创建多维文本数组?但在那之前,这样的事情是否可能?
我正在尝试创建一个使用箭头键的程序菜单。这是我到目前为止所做的:
#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]作为下标/索引,以便我可以轻松地操作它而不必创建多个条件。
答案 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] !!这有用吗?