2013-12-09 29 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

是的,所以零意味着“未初始化” - 但我编写的问题是设置缓冲区大小! –