0

我正在尝试将“char**”传递给另一个函数(我想使用的函数需要该表单作为参数),但我拥有的是一个双精度数组。我一直在尝试找到某种方法将双精度转换为 C 字符串并收集或连接它们,但是......我正在四处转转,​​除了编译器错误之外什么都没有。我会发布代码,但这一切都不是垃圾。

有人碰巧知道如何获取 7 个双精度值并获得一个 char** 吗?

4

2 回答 2

1

如果您使用 C,一种选择是分配char缓冲区并调用snprintf()以从双精度值构建字符串值,就像您将字符串打印到控制台时所做的那样(例如,格式字符串,例如"%f"后跟值)。

如果可以使用C++,std::ostringstream类也有类似的效果(<sstream>header);您可以将<<数值输入其中,调用str()创建 a std::string,最后调用c_str()对象string获取 a char*。这些指针可以放入临时 C 数组中以生成char**.

于 2012-07-13T07:58:55.543 回答
0

如果我正确理解情况:

让我们像这样声明你的函数 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]);
}
于 2012-07-13T08:04:31.780 回答