2

我正在为嵌入式目标 Microchip PIC24 编写 C 代码,并且运行时 libc 由于某种原因无法通过串行端口正确发送 \0 值。

printf("\xEE\xEE\0test");

例如发送 EE EE“测试”,空字节被忽略。

有谁知道为什么会这样?

编辑:Emmmm,没关系 XD。我正在使用 puts 发送字符串.. doh'

4

2 回答 2

5

空字符是 C 中的字符串终止符。 printf停在那里,因为\0就它而言,它是字符串的结尾。使用putchar(), 或printf()使用格式字符串可能有效:

printf("%c", '\0');

如果您0xEE 0xEE test按照您的建议接听电话,您确定test不是来自其他printf电话吗?

于 2011-08-05T17:25:18.213 回答
0

就 printf 而言,空字符表示字符串的结束。我很惊讶它会发送“测试”。您可能最好使用 write 系统调用,尤其是在串行端口上。

于 2011-08-05T17:28:17.793 回答