C++ Arduino功能可以';t编辑数组

C++ Arduino功能可以';t编辑数组,c++,arrays,arduino,C++,Arrays,Arduino,背景 我编写了一个Arduino函数,它通过串行连接接收格式为“a,b,c,d,e”的字符串,其中a,b,c,d,e是整数,每次接收到新字符串时,我都试图用这些整数更新数组。数据被接收并解析为单个整数,但数组不会正确更新 尝试 下面是代码,我保留了getData()函数,因为它所做的只是从串行连接接收字符串并将其存储在字符数组input(该部分工作正常) 问题 如果我发送一个字符串,如“6,7,8,9,0”,数组读数[]将更新为[289291293295297]无论我发送什么值,我都检查了spl

背景

我编写了一个Arduino函数,它通过串行连接接收格式为
“a,b,c,d,e”
的字符串,其中a,b,c,d,e是整数,每次接收到新字符串时,我都试图用这些整数更新数组。数据被接收并解析为单个整数,但数组不会正确更新

尝试

下面是代码,我保留了
getData()
函数,因为它所做的只是从串行连接接收字符串并将其存储在字符数组
input
(该部分工作正常)

问题


如果我发送一个字符串,如
“6,7,8,9,0”
,数组
读数[]
将更新为
[289291293295297]
无论我发送什么值,我都检查了
split
函数中包含的值,它们是正确的,但行
读数[x]=split
无法将数组元素更新为该顺序中的5个数字以外的任何数字。当在
parseData
函数内部或外部检查
读数[n]
的值时,会出现这种情况

此外,如果我在字符串中发送的整数少于5个,例如
a、b、c
,则只有第一个数组元素将更改,其他元素将保持为0,例如
[289291293,0,0]

在我发现将数组指针传递给函数之前,同样的事情发生在稍微不同的代码上——当我在循环中调用函数时,我只使用了
parseData()void parseData(){

问题


为什么数组没有正确更新?我如何修复它?

您的
读数是一个整数数组。
而
split
是指向char的指针

声明

readings[x] = split
将split(字符的地址)存储为整数值

如果我写

const char *pointer = "42";
int address = pointer;
我没有将整数值
42
存储在
address
中-我正在存储标识字符串中第一个字符的内存位置的数字


如果你想把一个字符串转换成一个整数,你需要用一个函数来解析它,比如。

where is
readings
input
声明了吗?
readings[x]=split;
@P0W哦,我错过了这一点——它们在开始时被声明为全局变量
int-readings[5];
char-input[64];
,以及
boolean parsed=true;
@AlexF我刚刚试过,谢谢,但现在我只是在数组中得到了不同的错误值
[49,50,51,52,53]<代码> >代码>什么?我以前只使用C++与ARDUNO在一个基本的层次上,在教程或演示中使用它时从来没有见过它正确解释过。
它将指针视为指向字符串开头的指针,并打印字符串。指针错误地存储在数组中,因为它是整数数组,而不是指针数组。谢谢,我使用了
atoi
,因为它更简单。我应该意识到我试图在
int
数组中存储
char
!@S.Dunnim实际上是
int
数组中的
char*
const char *pointer = "42";
int address = pointer;