我正在编写一个函数,它将以void指针的形式传递给float。我试图做的是将float转换为等效的字符串,以便我可以将二进制数据保存在内存中。例如,对我的函数的调用如下:
void * f(void * data);
如果用户通过我
float value = 3.14;
我想将其转换为字符串,如下所示:
"3.14"
我认为我应该使用的方法是首先确定float中的值的数量:3.14 =四个值。然后我必须遍历每个值并将其转换为字符。
我遇到的一些问题是1:我不确定是否有可能确定与给定浮点数相关的值的数量。 2:如何将每个值转换为等效的字符串?
我遇到了itoa和sprintf。但是,itoa不是标准C库的一部分,我不确定sprintf是否会按照我的意愿行事。
答案 0 :(得分:3)
大多数系统(特别是POSIX系统)都有snprintf
(和strdup
)所以你可以编码
char buf[48];
snprintf (buf, sizeof(buf), "%f", x);
如果你想要返回该字符串,strdup
它(那么你需要free
稍后strdup
的结果。
PS:sprintf
比snprintf
更危险,因为它可能会溢出缓冲区