我想要一个函数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);
}
但是如何有效地迭代占位符以及如何将float
arg替换为char*
?
答案 0 :(得分:0)
如果找到"%f"
格式代码,则使用dtostrf
函数转换下一个参数,而不是更改格式字符串(如果传递的字符串实际上是文字字符串则不可能),将值存储在一个临时的小字符串中,然后将其连接到输出字符串(即strcat
)。