2012-01-07 29 views
2

(itoaはなし)私は宣言し、以下に示すように2つの変数を初期化しています変換int型

int a=5; 
char* str; 
str = (char*)calloc(255, sizeof(char)); 

私はcharにint型を変換したい*標準Cで、私はいずれかを使用することはできませんこのようなC++からの変換関数。私はUbuntuの11.10すべての

+3

なぜitoaを使用できませんか? –

+1

@rogelware: 'itoa'は標準のC関数ではなく、Linuxでは利用できません。 –

+0

標準C関数とはどういう意味ですか?それはに存在します..あなたは含まれていないことを意味しますか? (ちょうど確認しました、はい、itoaは標準ではありません) –

答えて

12

ファーストを使用しています

は、itoaはC++ものではありません。

str = malloc(16); 
snprintf(str, 16, "%d", a); 

15の文字が方法です:あなたは、バッファオーバーフローの危険性を除去するのにかかわらず、snprintfを使用したいと思う実際のアプリケーションでは

sprintf(str, "%d", a) 

あなたは、単にsprintfを使用することができます整数を格納するのに十分です。

+3

'sizeof(char)'は定義ごとに1であり、 'calloc'は過剰です。また、 'calloc'の結果をキャストすることは無意味です。ちょうど 'str = malloc(BUFSIZE)'で十分です。 –

+0

ええ、ちょうど彼の質問からそれをコピーしました。しかし、mallocの代わりに常にcallocを使う人がたくさんいます。引数の1つがメモリをヌルにし、割り当て後にmemsetを実行するという面倒を省くためです。 – ThiefMaster

+0

十分に公正ですが、あなたがすでに訂正をしていることを考えれば、私もこれらを追加したいかもしれません:) –

関連する問題