2015-09-16 135 views
0

我在通過char*到Teensy上的char**數組時遇到問題。C++ Arduino將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(一char*)來填充。當我遞增j時,fuzzyRulesSingle中的下一個地址將填入新的temp

但是,當我在上面的代碼的外面打印我的fuzzyRulesSingle時,所有fuzzyRulesSingle都將被填充最後一個temp值。

我哪裏出錯了?

+1

我們重用'temp'遍地所以'fuzzyRulesSingle [J]'總是指向同一個地方。您需要將'temp'中的字符複製到'fuzzyRulesSingle [j]'中 - 先分配空間。 –

+0

你能告訴我們fuzzyRulesSingle對象的定義嗎?它是一個指針或數組的數組? – rozina

回答

1

您正在將fuzzyRulesSingle[j]指向臨時字符數組temp。 解決此問題的一種簡單方法是將fuzzyRulesSingle[j] = temp;更改爲strcpy(fuzzyRulesSingle[j], temp),並將fuzzzyRulessSingle的聲明更改爲所需的大小。

OR

你可以聲明temp如雷貫耳的循環和使用malloc分配內存必要的,然後將其分配給fuzzyRulesSingle[j]

相關問題