2

我在 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²

...

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

4

1 回答 1

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' };
于 2013-01-10T12:10:11.833 回答