Printf忽略空值?

时间:2011-08-05 17:24:10

标签: c null embedded printf microchip

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

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

例如发送EE EE" test",忽略空字节。

有人知道为什么会这样吗?

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

2 个答案:

答案 0 :(得分:5)

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

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

如果您按照建议收到0xEE 0xEE test,那么您确定test不是来自其他printf来电吗?

答案 1 :(得分:0)

就printf而言,null字符表示字符串的结尾。我很惊讶它发送了“测试”。你可能最好使用write系统调用,特别是通过串口。