最初に、このばかげた質問をしたことをお詫びします。
この関数をcで呼び出す方法(GNU C)
char *ftoa(float f, char *buf, int places)
これはあなたがそれを呼ぶ方法です:
int decimal_places = 10;
char* result = malloc(decimal_places + 1);
ftoa(SOME_FLOAT_VALUE, result, decimal_places);
関数はbuf
引数を返します。いつものように、文字列を使い終わったら、文字列をfree()することを忘れないでくださいresult
。
私が好む:
#define DECIMALS 10
char result[DECIMALS+1];
ftoa(SOME_FLOAT_VALUE, result, decimal_places);
私も、柔軟性を高めるためにsprintfを使用することをお勧めします。
私が静的割り当てを好む理由は、これが占めるスペースが少なくなるためです。関数を終了すると、自動的に割り当てが解除されます[それが必要でない場合は、明らかに、mallocが必要になる可能性がありますが、小さな変数のスタック割り当てでは、 11バイトは小さいです!、推奨される方法です。意味のない割り当てでWAYが多すぎるコードが表示されます。これはメモリを無駄にし、余分なコードを追加します。[ヒープから11バイトを割り当てるオーバーヘッドは、おそらく11バイトを超えます。これは、12バイトに丸める必要があるためです。次に、割り当てを説明するための「ヘッダー」(多くのシステムでは16バイトまたは32バイト)場合によっては12バイト]
CのGNU実装には、事前定義された関数ftoa()がないと思います。
次のようにsprintf()を使用できます。
float f;
char *a = (char *)malloc(10*sizeof(char)); //assuming you need 10 characters to store f
sprintf(a, "%f", f);
小数点以下の桁数を特定したい場合は、「%f」の代わりに「%0.2f」(小数点以下2桁)などを使用できます。
itoa()関数の代わりにsprintf()が便利な場合があります。例えば:
char *a = (char *)malloc(10*sizeof(char);
int x = 10;
float f = 12.4;
sprintf(a, "%d", x); //=itoa() function
sprintf(a, "%f", f);
幸運を!