将float转换为c中的字符串

标签 c floating-point char systems-programming

<分区>

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

void * f(void * data);

如果用户通过我

float value = 3.14;

我想把它转换成如下所示的字符串:

"3.14"

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

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

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

最佳答案

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

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

如果您想返回该字符串,strdup 它(然后您需要释放 strdup 的结果)。

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

关于将float转换为c中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14681533/

相关文章:

c - 段错误 - 显示树

c++ - 纯 C/C++ 中的二进制序列化

java - Java 中的货币精度(不是 BigDecimal)

c++ - 如何将字符串中的单个字符转换为 int

c - MSVCRT:sin、cos等的实现(源码)在哪里?

c - 错误 : variable-sized array may not be initialized

math - float 学坏了吗?

floating-point - float有负零吗? (-0f)

Java:如果用户输入 'y' | |'Y' 测验开始 ,'n' | |'N' 测验结束,休息时显示无效。我想当用户输入以 y 或 n 开头的单词时显示无效

C:如何为char数组动态分配和释放内存?