Arduino char []结尾的意外字符

时间:2013-01-10 04:46:04

标签: arduino

我在Arduino草图中有char []。 代码:

int i = 0;

void setup(){
Serial.begin(9600);

}

void loop(){
  i++;
  Serial.println(i);
  char fff[8] = {'0','0','0','0','0','0','0','0'};
  Serial.println(fff);
  delay(200);
}

听我说的端口:

1
00000000²
2
00000000²
3
00000000²
4
00000000²

...

如何在可打印字符的末尾使用意外字符解决此问题?

1 个答案:

答案 0 :(得分:4)

fff字符串未终止,因此Serial.println()函数不知道何时停止从内存中读取字符并将其发送到串行端口。它会在内存中找到第一个空字节后立即停止 - 导致不可预测的行为。

要解决此问题,您需要在字符串的末尾添加一个空字符(并确保已分配足够的内存来覆盖它)。在字符数组中,空字符可以编码为数字(0)或使用转义序列('\0')编码。

因此,请将fff的定义更改为:

char fff[9] = { '0', '0', '0', '0', '0', '0', '0', '0', 0 };

或:

char fff[9] = { '0', '0', '0', '0', '0', '0', '0', '0', '\0' };