C ++ Arduino将char *传递给char *数组

时间:2015-09-16 13:09:02

标签: c++ arduino teensy

我在将char*传递给我的Teensy上的char**数组时出现问题。

以下是有问题的部分:

for (j = 0; j < rulesamountsingle; j++) {
   emptybuffer(buff);
   char temp[10];
   while(!Serial.available());
   len = Serial.available();
   for (i = 0; i < len; i++) {
     temp[i] = Serial.read();
   }
   temp[len-1] = 0;
   fuzzyRulesSingle[j] = temp;
   Serial.print(fuzzyRulesSingle[j]);
   Serial.print('\n');
 }

如您所见,fuzzyRulesSingle[j](其中fuzzyRulesSinglechar**)将由变量tempchar*)填充。当我增加j时,fuzzyRulesSingle中的下一个地址将被新的temp填充。

但是,当我在上面的代码中打印fuzzyRulesSingle OUTSIDE时,所有fuzzyRulesSingle都将填充最后一个temp值。

我哪里出错?

1 个答案:

答案 0 :(得分:1)

您将fuzzyRulesSingle[j]指向临时字符数组temp。 解决此问题的一种简单方法是将fuzzyRulesSingle[j] = temp;更改为strcpy(fuzzyRulesSingle[j], temp)并将fuzzzyRulessSingle的声明更改为所需的大小。

OR

您可以声明temp超出循环并使用malloc分配必要的内存,然后将其分配给fuzzyRulesSingle[j]