2013-12-09 30 views
1

我第一次搞亂了Arduino板。用Arduino和C++聲明和寫入數組的問題

我必須聲明如下(我知道不審判我)的陣列,它是用於存儲LCD的每個字符作爲一種緩存:

char* lcd_characters[] = {"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""}; 

然後後來我試着寫入到陣列的特定插槽,這樣,該字母保存到它:

new_char = String(message.charAt(i)); 

...等等等等等等...

lcd_characters[pos] = new_char; << error here 

但是它給我這個錯誤:

error: cannot convert 'String' to 'char*' in assignment 

有趣的是,當我這樣做(見下文)它做分配信它,但是我有一個變種是一個字母,但不能分配它。

lcd_characters[pos] = "H"; 

有人可以幫助我出去請。謝謝。我是C品牌,到目前爲止還行。

基本上我想要一個字符數組,然後我想用一個新值寫入數組的位置。

爲什麼它甚至不管我寫入數組位置的字符串是什麼類型,我應該可以在那裏寫一個數字或布爾值,並在以後調用它。最初聲明數組的方式有什麼問題嗎?

編輯:

我想...

lcd_characters[pos] = new_char.c_str(); 

但多數民衆贊成給我類似的錯誤:

invalid conversion from 'const char*' to 'char' 

跆拳道?我想要做的就是說這個數組的位置等於這個新值。而已。我已經在JavaScript,ruby,python(甚至是php)等中完成了這一百萬次。我只想去,這個數組... x [12]等於我在new_char中的字母!啊。

+0

new_char = String(message.charAt(i)); //你確定這是C嗎? – Sevauk

+0

@Sevauk TBH它可能是C++,這是我的第一天! – Smickie

+0

然後,如果它是C++,則試圖將字符串對象(new_char)分配給char *類型(lcd_character [pos])。你應該學習C++對象。 – Sevauk

回答

3

一個幾句話:

  1. 您正在使用C或C++?字符串是一個C++類,但您正在創建一個c字符串數組(char *)。

  2. 您正在創建一個字符串數組(char* var[]等於char**),但您的命名建議您需要一個字符數組。 c字符串基本上是一個字符數組,所以堅持(char *char [])。

我會建議你去只有在這種情況下,C代碼:

char lcdChars[4] = {' ', ' ', ' ', ' '}; // init with spaces 
lcdChars[2] = 'x'; // write x to position 3 

注:C A ++字符串可以輸出C字符串(char *)通過調用stringInstance.c_str()

+0

'char lcdChars [3] = {0}'也是一個好主意。 –

+0

'char lcdChar [3] = {'0'}'不是一個好主意嗎?我不知道你可能會期望什麼輸出字符0(是一個終止字符)? – Aloys

+1

是的,所以零意味着「未初始化」 - 但我編寫的問題是設置緩衝區大小! –