我有以下问题:
我希望以下列形式从串口数据中接收: “30,45,33,22 \ n” 个; 我想在输入'\ n'char之后用逗号分割字符串并将每个值放在一个int数组中。问题是我尝试了 strtok 和 sscanf 它只是不起作用:
#define PARAM_NR 10
Timer tt;
int i=0;
int index=0;
bool stringComplete=false;
char recString[MAX_LEN];
char buf[20];
int commands[PARAM_NR];
void serialEv()
{
char aux;
char *token;
int i=0;
while(Serial.available())
{
aux=Serial.read();
if(i!='\n' )
{
recString[i++]=aux;
recString[i]='\0';
}
if(aux=='\n');
{
token=strtok(recString,",");
while(token!=NULL)
{
token=strtok(NULL,",");
sscanf(token,"%d",&commands[index]);
Serial.println(commands[index]);
index++;
if(index==PARAM_NR)
index=0;
break;
}
}
}
}
示例:
输入:
1,1,1
输出:
1
0
0
它似乎只在第一个位置打印1,在其他位置打印0。 如果我尝试另一个输入
例如: 输入1:
1,1,1
输入2
3,4,5
输出:
1
0
0
0
0
0
答案 0 :(得分:0)
在我交换了这两条指令之后,它工作了:
sscanf(token,"%d",&commands[index]);
token=strtok(NULL,",");
我仍然不知道strtok是如何运作的。