我正在尝试将“char**”传递给另一个函数(我想使用的函数需要该表单作为参数),但我拥有的是一个双精度数组。我一直在尝试找到某种方法将双精度转换为 C 字符串并收集或连接它们,但是......我正在四处转转,除了编译器错误之外什么都没有。我会发布代码,但这一切都不是垃圾。
有人碰巧知道如何获取 7 个双精度值并获得一个 char** 吗?
如果您使用 C,一种选择是分配char
缓冲区并调用snprintf()
以从双精度值构建字符串值,就像您将字符串打印到控制台时所做的那样(例如,格式字符串,例如"%f"
后跟值)。
如果可以使用C++,std::ostringstream
类也有类似的效果(<sstream>
header);您可以将<<
数值输入其中,调用str()
创建 a std::string
,最后调用c_str()
对象string
获取 a char*
。这些指针可以放入临时 C 数组中以生成char**
.
如果我正确理解情况:
让我们像这样声明你的函数 f:
int f(const int n, const double* values, char** out_words);
第一个参数 n 是双精度数,值是您输入的双精度数,out_words 是您要在其中写入数字的 C 字符串数组。
我假设 out_words 正确分配了至少 n 个指针,每个指针都指向足够多的字节来保存数字。
所以函数体可能是这样的:
#include <string.h>
int i;
for (i=0; i<n; ++i) {
sprintf(out_words[i], "%g", values[i]);
}