Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在为嵌入式目标 Microchip PIC24 编写 C 代码,并且运行时 libc 由于某种原因无法通过串行端口正确发送 \0 值。
printf("\xEE\xEE\0test");
例如发送 EE EE“测试”,空字节被忽略。
有谁知道为什么会这样?
编辑:Emmmm,没关系 XD。我正在使用 puts 发送字符串.. doh'
空字符是 C 中的字符串终止符。 printf停在那里,因为\0就它而言,它是字符串的结尾。使用putchar(), 或printf()使用格式字符串可能有效:
printf
\0
putchar()
printf()
printf("%c", '\0');
如果您0xEE 0xEE test按照您的建议接听电话,您确定test不是来自其他printf电话吗?
0xEE 0xEE test
test
就 printf 而言,空字符表示字符串的结束。我很惊讶它会发送“测试”。您可能最好使用 write 系统调用,尤其是在串行端口上。