我正在为嵌入式目标Microchip PIC24编写C代码,并且由于某种原因,运行时libc无法通过串行端口正确发送\ 0值。
printf("\xEE\xEE\0test");
例如发送EE EE" test",忽略空字节。
有人知道为什么会这样吗?
编辑:嗯,没关系XD。我正在使用put来发送字符串.. doh'答案 0 :(得分:5)
空字符是C中的字符串终止符。printf
在那里停止,因为\0
是字符串的结尾,就其而言。使用putchar()
或printf()
格式字符串可能有效:
printf("%c", '\0');
如果您按照建议收到0xEE 0xEE test
,那么您确定test
不是来自其他printf
来电吗?
答案 1 :(得分:0)
就printf而言,null字符表示字符串的结尾。我很惊讶它发送了“测试”。你可能最好使用write系统调用,特别是通过串口。