我有一个缓冲区,通过串口接收数据。当我收到特定字符时,我知道一行数据已经接收完毕,并且我想使用printf
方法打印它。但是每一行的长度值都不同,如果我只使用如下代码:
printf("%s", buffer);
我正在打印该行以及前一行的其他字符(如果前一行比当前行长)。
我在这里读到,至少在C++中,可以告诉你想要读取多少个字符,给定一个%s
,但它没有示例,而且我不知道如何在C中实现。有什么帮助吗?
我认为我有三种解决方案:
- 使用
for
循环逐个打印字符 - 使用终止字符
- 或者使用.*
问题是:哪一个更快?因为我正在处理微芯片PIC,并希望它尽可能快地完成。
buffer
后,也要附加一个空字符(\0
)。这会“告诉”sprintf()
何时停止打印字符。 - Linus Kleen