我有一個字符數組char *menu_strings[8];
,我用可重複使用的菜單()函數動態地填充屏幕菜單的選項。我可以使用手工字符串單獨更改項目,例如menu_strings[0] = "New";
等,但如何從另一個函數返回一個char *並將其插入到數組的「字符串」之一?如果我使用函數像這樣通過陣列嘗試循環:如何將一些char *數組放入二維數組中?
for (i=0; i<8; i++)
{
char returnedOption[32];
if (getOption(i, returnedOption))
menu_strings[i] = returnedOption;
}
bool getOption(byte entryNum, char* option) { //code and stuff }
...所有8個menu_strings都充滿了第八個/最後一個選項返回(I = 7),而不是每個單獨條目的字符串。 ..
for (i=0; i<8; i++)
Serial.println(menu_strings[i]);
輸出:
option eight
option eight
option eight
option eight
option eight
option eight
option eight
option eight
我使用Arduino的IDE,但感覺相當自信地說我會搞砸了任何C/++ /#這裏指針的使用。此外,返回的char *不會超過31個字符加空指針。
你使用'char *'爲什麼不是字符串 https://www.arduino.cc/en/Reference/String –
'我可以用手型字符串單獨更改項目,例如menu_strings [0] =「New」;'這不符合你的想法,這就是問題所在。要麼使用strcpy(但首先你需要malloc,free等)或者std :: string。 – deviantfan
*但是如何從另一個函數返回一個char *?從'char *'事務中退出並簡單地使用'std :: string'。根據您發佈的內容,您也可能會返回本地數組的地址。如果你這樣做,返回一個局部變量的地址是未定義的行爲。 – PaulMcKenzie