将浮点数转换为c中的字符串

时间:2013-02-04 06:36:44

标签: c floating-point char systems-programming

我正在编写一个函数,它将以void指针的形式传递给float。我试图做的是将float转换为等效的字符串,以便我可以将二进制数据保存在内存中。例如,对我的函数的调用如下:

void * f(void * data);

如果用户通过我

float value = 3.14;

我想将其转换为字符串,如下所示:

"3.14"

我认为我应该使用的方法是首先确定float中的值的数量:3.14 =四个值。然后我必须遍历每个值并将其转换为字符。

我遇到的一些问题是1:我不确定是否有可能确定与给定浮点数相关的值的数量。 2:如何将每个值转换为等效的字符串?

我遇到了itoa和sprintf。但是,itoa不是标准C库的一部分,我不确定sprintf是否会按照我的意愿行事。

1 个答案:

答案 0 :(得分:3)

大多数系统(特别是POSIX系统)都有snprintf(和strdup)所以你可以编码

 char buf[48];
 snprintf (buf, sizeof(buf), "%f", x);

如果你想要返回该字符串,strdup它(那么你需要free稍后strdup的结果。

PS:sprintfsnprintf更危险,因为它可能会溢出缓冲区