我在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]
(其中fuzzyRulesSingle
是char**
)将由变量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/