「char**」を別の関数に渡そうとしています (使用したい関数は、その形式をパラメーターとして必要とします) が、私が持っているのは double の配列です。doubleをC文字列に変換し、それらを収集または連結する方法を見つけようとしていますが...私は転がっていて、コンパイラエラー以外には何も得られません。コードを投稿したいと思いますが、これはすべてジャンクではありません。
たまたま 7 つの double 値を取得して char** を取得する方法を知っている人はいますか?
C を使用している場合、1 つのオプションは、コンソールに文字列を出力する場合と同じように、char
バッファーを割り当てて double から文字列値を構築する呼び出しを行うことです (たとえば、値が続くなどの書式文字列)。snprintf()
"%f"
C++ を使用できる場合、std::ostringstream
クラスには同様の効果があります (<sstream>
ヘッダー)。<<
数値を入力し、 を呼び出してstr()
を作成しstd::string
、最後c_str()
にstring
オブジェクトを呼び出して を取得できます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]);
}