我在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²
...
如何在可打印字符的末尾使用意外字符解决此问题?
答案 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' };