[英]C++ Arduino passing char* to an array of char*
我在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
( char*
)填充。 當我增加j
, fuzzyRulesSingle
的下一個地址將由新的temp
填充。
但是,當我在上面的代碼之外打印我的fuzzyRulesSingle
時,所有fuzzyRulesSingle
都將被temp的最后一個值填充。
我哪里出問題了?
您將fuzzyRulesSingle[j]
指向臨時char數組temp
。 解決此問題的一種簡單方法是更改fuzzyRulesSingle[j] = temp;
更改為strcpy(fuzzyRulesSingle[j], temp)
並將fuzzzyRulessSingle
的聲明更改為所需的大小。
要么
您可以聲明temp
超出循環大小,並使用malloc
分配必要的內存,然后將其分配給fuzzyRulesSingle[j]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.