toString 演算子を使用することは可能ですか、または数値を char 配列に変換する方法はありますか。
3 に答える
int myNumber = 27; /* or what have you */
char myBuffer[100];
snprintf(myBuffer, 100, "%d", myNumber);
ここで考慮すべき点がいくつかあります。文字列を保持するためのメモリを提供するのは誰ですか? どれくらいの期間必要ですか?など。(その上には 100 バイトのスタック バッファがあり、出力される整数値に必要なサイズよりもはるかに大きくなっています。)
最良の答え: Java の使用を開始します。または Javascript、C#、または神への愛のための C 以外のほとんどすべて。このように嘘をつくのはトラだけです。
機能を使用してくださいsprintf()
。
sprintf()
バッファ オーバーフローが発生する可能性があるため、安全ではないと見なされます。利用できる場合 (そして多くのプラットフォームで利用できる場合) は、snprintf()
代わりに使用する必要があります。次のコードを検討してください。
#include <stdio.h>
int main()
{
int i = 12345;
char buf[4];
sprintf(buf, "%d", i);
}
これにより、バッファ オーバーフローが発生します。int
したがって、オーバーフローの可能性があるため、必要な文字数が少なくても、バッファーを の最大サイズ (文字列として) に過剰に割り当てる必要があります。代わりに、 を使用snprintf()
した場合は、書き込む文字数を指定できます。その数を超えると切り捨てられます。
#include <stdio.h>
int main()
{
int i = 12345;
char buf[4];
snprintf(buf, 4, "%d", i);
//truncates the string to 123
}
いずれの場合も、有効な出力に十分なバッファ スペースを割り当てるように注意する必要があります。snprintf()
バッファがオーバーフローするエッジケースを考慮していない場合に備えて、セーフティネットを提供するだけです。