【问题标题】:How to write floats to a C-string? [closed]如何将浮点数写入 C 字符串? [关闭]
【发布时间】:2015-08-10 14:36:27
【问题描述】:

我是 C 中处理数组的新手,我正在尝试存储这样的字符串:

//x, y, p are floats
("X: %f\nY: %f\nP: %f", x, y, p)

到一个数组中。

我不知道如何读取值xyp,以便数组将其存储为单个字符串。

有可能吗?如果没有,我该怎么做?

更新

显然人们不明白我的意思。

上面的不是我的具体代码,是我要存储的字符串;一个例子。

printf("X: %f\nY: %f\nP: %f", x, y, p); 

在命令中打印时等于:

X: 10.000000
Y: 12.000000
P: 32.000000

这就是我希望将其存储在数组中的方式,而是将其识别为 4 个参数,而不是 1 个。

  1. 字符串 = "X: %f\nY: %f\nP: %f"
  2. x
  3. p

如何让它将其识别为一个参数?

【问题讨论】:

  • 数组在哪里,字符串在哪里?
  • use sprintf? 记得确保输出缓冲区足够大
  • @Sourav Ghosh FWIW:"X: %f\nY: %f\nP: %f" 是一个字符串和一个数组。然而在 OP 的情况下,目标字符串可能是隐含的。
  • simple use of sprintf c 的可能重复项——如果确认重复项,请使用此链接。上一个非常狭窄,关于某些版本的 gcc 中的错误
  • 形成一个大小合适的缓冲区并打印使用int n = snprintf(NULL, 0, "X: %f\nY: %f\nP: %f", x, y, p); char buf[n+1]; snprintf(buf, sizeof buf, "X: %f\nY: %f\nP: %f", x, y, p);

标签: c string c-strings


【解决方案1】:

您可以使用sprintf or snprintf。这里array是你的C字符串数组(char *array[n]):

array[x] = malloc(64);
snprintf(array, 64, "X: %f\nY: %f\nP: %f", x, y, p);

snprintf 更安全,因为您可以设置它应该写入的最大字符数。

我在这里选择了幻数64,但是您应该确保分配足够的内存来存储带有转换后的浮点数的结果字符串。

【讨论】:

  • 那是完美的。谢谢你一百万我的朋友。我很高兴你明白我的意思,我在这个问题上遇到了很多仇恨。
猜你喜欢
  • 1970-01-01
  • 2021-03-31
  • 1970-01-01
  • 2018-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
相关资源
最近更新 更多