(itoaはなし)私は宣言し、以下に示すように2つの変数を初期化しています変換int型
int a=5;
char* str;
str = (char*)calloc(255, sizeof(char));
私はcharにint型を変換したい*標準Cで、私はいずれかを使用することはできませんこのようなC++からの変換関数。私はUbuntuの11.10すべての
(itoaはなし)私は宣言し、以下に示すように2つの変数を初期化しています変換int型
int a=5;
char* str;
str = (char*)calloc(255, sizeof(char));
私はcharにint型を変換したい*標準Cで、私はいずれかを使用することはできませんこのようなC++からの変換関数。私はUbuntuの11.10すべての
ファーストを使用しています
は、itoa
はC++ものではありません。
str = malloc(16);
snprintf(str, 16, "%d", a);
15の文字が方法です:あなたは、バッファオーバーフローの危険性を除去するのにかかわらず、snprintf
を使用したいと思う実際のアプリケーションでは
sprintf(str, "%d", a)
:
あなたは、単にsprintf
を使用することができます整数を格納するのに十分です。
'sizeof(char)'は定義ごとに1であり、 'calloc'は過剰です。また、 'calloc'の結果をキャストすることは無意味です。ちょうど 'str = malloc(BUFSIZE)'で十分です。 –
ええ、ちょうど彼の質問からそれをコピーしました。しかし、mallocの代わりに常にcallocを使う人がたくさんいます。引数の1つがメモリをヌルにし、割り当て後にmemsetを実行するという面倒を省くためです。 – ThiefMaster
十分に公正ですが、あなたがすでに訂正をしていることを考えれば、私もこれらを追加したいかもしれません:) –
なぜitoaを使用できませんか? –
@rogelware: 'itoa'は標準のC関数ではなく、Linuxでは利用できません。 –
標準C関数とはどういう意味ですか?それはに存在します..あなたは含まれていないことを意味しますか? (ちょうど確認しました、はい、itoaは標準ではありません) –