0

我在将 a 传递给我的 Teensy 上char*的数组时遇到问题。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](where fuzzyRulesSingleis a char**) 将由变量temp(a char*) 填充。当我增加j时,下一个地址fuzzyRulesSingle将由一个新的temp.

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

我哪里出错了?

4

1 回答 1

1

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

或者

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

于 2015-09-16T13:27:47.053 回答