0

void ポインターの形式で float を渡す関数を作成しています。私がやろうとしているのは、そのフロートを同等の文字列に変換して、そのバイナリデータをメモリに保存できるようにすることです。たとえば、私の関数への呼び出しは次のとおりです。

void * f(void * data);

ユーザーが私を追い越した場合

float value = 3.14;

以下のように文字列に変換したいと思います。

"3.14"

私が使用すべきだと思うアプローチは、最初に float 内の値の数を決定することです: 3.14 = 4 つの値。次に、各値をループして文字に変換する必要があります。

私が抱えているいくつかの問題は、次のとおりです。特定のフロートに関連付けられた値の数を決定することさえ可能かどうかはわかりません。2: 各値を対応する文字列に変換するにはどうすればよいですか?

私は itoa と sprintf に出会いました。ただし、itoa は標準 C ライブラリの一部ではなく、sprintf が希望どおりに動作するかどうかはわかりません。

4

1 に答える 1

3

ほとんどのシステム (特に POSIX システム) にはsnprintf(およびstrdup) があるため、コーディングできます。

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

その文字列を返したい場合は、それを返します(後で結果がstrdup必要になります)。freestrdup

PS:バッファがオーバーフローする可能性があるため、sprintfより危険です。snprintf

于 2013-02-04T06:39:03.507 に答える