0

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

void * f(void * data);

如果用户经过我

float value = 3.14;

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

"3.14"

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

我遇到的几个问题是 1:我不确定是否甚至可以确定与给定浮点数关联的值的数量。2:如何将每个值转换为其等效的字符串?

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

4

1 回答 1

3

大多数系统(尤其是 POSIX 系统)都有snprintf(and strdup),因此您可以编写代码

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

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

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

于 2013-02-04T06:39:03.507 回答