0

我想要一个函数 debug_print(fmt, args) 接受格式字符串、参数并构建一个 char 缓冲区,然后我可以将其发送到 UART。基本上我可以将所有这些传递给scanf,但问题是格式化浮点数需要特别小心。

dtostrf( float_num, 3, 4, temp_buf );

所以我需要%f%s格式字符串替换并将 float arg 更改为temp_buf. 由于嵌入式环境功能有限,所有这些都必须以最少的步骤完成。

如果有人可以帮助建立这样的功能,将不胜感激。

像这样的东西:

void debug_print(char *fmt, ... )
{
    va_list args;
    va_start(args,fmt);
    // use uart function for output
    va_end(args);
}

但是如何有效地遍历占位符以及如何将floatarg 替换为char*

4

1 回答 1

0

而不是更改格式字符串,如果传递的字符串实际上是文字字符串,这是不可能的,当您找到"%f"格式代码时,您使用您的dtostrf函数转换下一个参数,将值存储在一个临时的小字符串中,然后将其连接到输出字符串(即strcat)。

于 2012-11-29T11:55:25.943 回答