Struct Arduino不通过串行端口返回所需的输出

Struct Arduino不通过串行端口返回所需的输出,struct,arduino,serial-port,arduino-uno,Struct,Arduino,Serial Port,Arduino Uno,我想通过串口发送结构内部的元素列表,但Arduino产生的输出不正常 帮点忙?这种异常输出的原因是什么 const int menu_max_item=20; int menu_num_项=0; 类型定义结构项菜单{ 字符串文本; 无效*无效; }项目菜单; t_项_菜单arr_菜单[菜单最大项]; 无效菜单\u添加\u项字符串txt,无效*fvoid{ arr\u menu[菜单项].text=txt; arr\u menu[菜单项].func=f; 菜单项++; } void fn\u nd

我想通过串口发送结构内部的元素列表,但Arduino产生的输出不正常

帮点忙?这种异常输出的原因是什么

const int menu_max_item=20; int menu_num_项=0; 类型定义结构项菜单{ 字符串文本; 无效*无效; }项目菜单; t_项_菜单arr_菜单[菜单最大项]; 无效菜单\u添加\u项字符串txt,无效*fvoid{ arr\u menu[菜单项].text=txt; arr\u menu[菜单项].func=f; 菜单项++; } void fn\u nd\u函数{ 串行打印“测试”; } 无效打印菜单液晶显示器{ forint x=0;x<4&&x
item 
tem 
em
期望输出

item 1
item 2
item 3

你有几个错误

此代码:

void fn\u nd\u函数{ 串行打印“测试”; } 测试不是一个单一的字符,是吗?那你为什么要用单引号呢

但更重要的是,这是导致输出不好的原因:

菜单\添加\项itemitem+i,fn \ n和\ u功能; item+i不是将数字连接到字符串项末尾的方式。这是C++,不是java或Python。您必须单独构建该字符串。请不要试图使用String类,因为这可能会导致其他问题

现在发生的事情是,您正在传递一个项,它是一个指向存储在内存中某处的字符数组的指针,该数组包含字符“i”、“t”、“e”和“m”。当你向该指针添加1时,你会得到一个指向“t”的指针,当你添加2时,你会得到一个指向“e”的指针。因此,当你从这些指针打印时,你只能得到指针指向的部分

您需要在前面有一行代码来首先构建字符串。大致如下:

char str[7]=项;//请注意这两个空格,以便为数字留出空间 str[5]=i+'0';//添加“0”以将单个数字转换为ascii 菜单添加项str、fn和函数;
你有几个错误

此代码:

void fn\u nd\u函数{ 串行打印“测试”; } 测试不是一个单一的字符,是吗?那你为什么要用单引号呢

但更重要的是,这是导致输出不好的原因:

菜单\添加\项itemitem+i,fn \ n和\ u功能; item+i不是将数字连接到字符串项末尾的方式。这是C++,不是java或Python。您必须单独构建该字符串。请不要试图使用String类,因为这可能会导致其他问题

现在发生的事情是,您正在传递一个项,它是一个指向存储在内存中某处的字符数组的指针,该数组包含字符“i”、“t”、“e”和“m”。当你向该指针添加1时,你会得到一个指向“t”的指针,当你添加2时,你会得到一个指向“e”的指针。因此,当你从这些指针打印时,你只能得到指针指向的部分

您需要在前面有一行代码来首先构建字符串。大致如下:

char str[7]=项;//请注意这两个空格,以便为数字留出空间 str[5]=i+'0';//添加“0”以将单个数字转换为ascii 菜单添加项str、fn和函数; 叹气阿杜伊诺不是C.叹气!Arduino不是C。