我如何将许多char*数组放入二维数组中
How do I put a number of char* arrays into a two dimensional array?
我有一个char数组char *menu_strings[8];
,我可以在可重复使用的菜单()函数中动态屏幕菜单的选项。我可以用手工型字符串单独更改项目,例如menu_strings[0] = "New";
等。但是,我该如何从另一个功能中返回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,但自信地认为我会在此处搞砸指针的用法。另外,返回的char*永远不会超过31个字符和空指针。
非常感谢Paulmckenzie,Yardpenalty和Deviantfan带领我找到答案:
摆脱
char *
业务,只需使用std::string
即可。你也是 考虑到您发布的内容,可能会返回本地阵列的地址。 如果您这样做,返回本地变量的地址是 未定义的行为。
这导致我使用arduino string对象,而不是char*
https://www.arduino.cc/en/reference/stringobject并使用toCharArray()
进行坚持使用炭指针的任何库调用。这有效,但增加了约2K(或我的可用程序内存的7%!)。
最后,我放弃了 *指针,因为这是不正确的,并且按照Deviantfan和Yardpenalty的建议正确使用strcpy
,以远离String
库。它的负债在这里进一步赞扬:https://hackingmajenkoblog.wordpress.com/2016/02/04/the-evils-of-arduino-strings/
- 将值从二维数组输出到文本文件
- 在二维数组中查找最小值和最大值?
- 移动二维数组中的字符
- 如何正确填充在堆上分配的二维数组?
- 传递二维数组时出现问题
- 具有随机数的二维数组不会更改
- 如何在C++中获取二维数组中最少的一列数?
- 如何使用用户输入变量制作二维数组?
- C++ 中动态二维数组的访问冲突
- 遍历二维数组的所有子数组
- 将二维数组的所有元素插入到一维数组中
- 在函数中传递二维数组
- 为什么指针在对二维数组进行排序时无法正常工作?
- 创建 std::string 的二维数组的最佳做法
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 元素在二维数组 c++ 中的出现次数
- 执行 c++ 二维数组
- C++ 中的二维数组初始化为一个值
- 二维数组:二维数组的子平方的元素之和
- Cplusplus std::一组二维数组