我在将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]
(其中fuzzyRulesSingle
是char**
)将由变量temp
(char*
)填充。当我增加j
时,fuzzyRulesSingle
中的下一个地址将被新的temp
填充。
但是,当我在上面的代码中打印fuzzyRulesSingle
OUTSIDE时,所有fuzzyRulesSingle
都将填充最后一个temp值。
我哪里出错?
答案 0 :(得分:1)
您将fuzzyRulesSingle[j]
指向临时字符数组temp
。
解决此问题的一种简单方法是将fuzzyRulesSingle[j] = temp;
更改为strcpy(fuzzyRulesSingle[j], temp)
并将fuzzzyRulessSingle
的声明更改为所需的大小。
OR
您可以声明temp
超出循环并使用malloc
分配必要的内存,然后将其分配给fuzzyRulesSingle[j]