2017-04-15 38 views
0

我正在寫一個arduino IDE上的程序,我想交換一些變量。如果你不瞭解arduino,它本質上是用C++編寫的。溫度變量沒有從數組中分配正確的值

的背景信息的比特:

  • 件是一個二維數組
  • 件將返回 「N」, 「1」, 「2」,..., 「5」 的字符串,或 「6」
  • Serial.println(MSG)僅僅是一個打印功能

這裏是代碼:

String temp = Pieces[piece][0]; 
Serial.println(temp); 
Serial.println(Pieces[piece][0]); 

代碼應返回相同的值2,但它實際上返回的是:

"" 
"n" 

第一個值應該是n爲好,但它僅僅是空白。下面是件是如何初始化:

String Pieces[27][6] = 
    { 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"t", "t", "t", "t", "t", "t"} 
    }; 

的問題是,數組是太大,所以我試圖將其更改爲字符,而不是字符串,但它不工作。

繼承人是什麼樣子現在:

char Pieces[27][6] = 
{ 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    ... 
    {"t", "t", "t", "t", "t", "t"} 
}; 

而且其繼承人給我的​​錯誤:

error: too many initializers for 'char [6]' 

有人能幫助我正確初始化呢?

+0

'piece'是如何設置的以及'Pieces'數組維度的邊界是什麼? – twain249

+0

我編輯了這個問題,它顯示了件件的樣子,我希望有足夠的信息讓你知道我從哪裏來 – Scurb

+0

代碼似乎很好。您是否排除了其他因素,如內存不足問題或串行接口問題?你嘗試過更小的陣列嗎?你嘗試過一維數組嗎? –

回答

0

由於它似乎是與內存有關的問題,如果您確實需要多字符字符串,則應考慮使用簡單的char s而不是String s或char[]。然後

你的初始化是這樣的:

char Pieces[][6] = 
{ 
    {'n', 'n', 'n', 'n', 'n', 'n'}, 
    {'n', 'n', 'n', 'n', 'n', 'n'}, 
    ... 
    {'t', 't', 't', 't', 't', 't'} 
}; 

,你的任務將是

char temp = Pieces[piece][0]; 

如果你需要使用字符串,使用字符*:

char* Pieces[][6] = 
    { 
     { "n", "n", "n", "n", "n", "n" }, 
     ... 
     { "n", "n", "n", "n", "n", "n" } 
    }; 

char *temp = Pieces[0][1]; 

如果你不打算執行任何奇特的字符串操作,String類不是我們無論如何,都是爲了你。

順便說一句,請注意您在初始化時可以很方便地忽略數組大小。

+0

是的,一切都完美的作品,爲響應歡呼。 – Scurb