我在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](其中fuzzyRulesSinglechar**)将由变量temp(a char*)填充。当我增加j时,fuzzyRulesSingle中的下一个地址将被新的temp填充。

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

我哪里出问题了?

最佳答案

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

要么

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

关于c++ - C++ Arduino将char *传递给char *数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32609542/

10-12 14:24