将数组复制到另一个

时间:2018-02-04 15:44:22

标签: c mplab

我有这两个数组,我想在每种情况下使用它们在我的LCD上打印不同的数组。

这是一个例子

char *ChangeSituatuion;
char *MainMenu[4]={"Category 1","Category 2","Category 3","Category 4"};
char *SubMenu[2]={"Category 3","Category 4"};

//case 1
*ChangeSituatuion=MainMenu;

//case 2
*ChangeSituatuion=SubMenu;


LCDPutStr(ChangeSituatuion[0],1);

上面的这个例子我在我的Lcd上没有任何意义的字母

2 个答案:

答案 0 :(得分:0)

如果你想复制指针,而不是制作具有相同内容的第二个数组,我认为这应该有效:

char **ChangeSituatuion;
char *MainMenu[4]={"Category 1","Category 2","Category 3","Category 4"};
char *SubMenu[2]={"Category 3","Category 4"};

//case 1
ChangeSituatuion=MainMenu;

//case 2
ChangeSituatuion=SubMenu;


LCDPutStr(ChangeSituatuion[0],1);

在那里,数组类型被转换为指针类型。请记住,长度为X的数组与长度为Y的数组的类型不同,但无论如何,对指针的强制转换都是微不足道的。

编辑:纠正错字。

答案 1 :(得分:0)

您有间接级别问题。你需要一个指向一个指针数组的指针。你的代码应该是:

char **ChangeSituatuion;
char *MainMenu[4]={"Category 1","Category 2","Category 3","Category 4"};
char *SubMenu[2]={"Category 3","Category 4"};

//case 1
ChangeSituatuion=MainMenu;

//case 2
ChangeSituatuion=SubMenu;

LCDPutStr(ChangeSituatuion[0],1);