char*/char[]】int型やdouble型などの数値を文字列に変換する方法を紹介します。snprintf関数で数値を文字列に変換するC言語で数値を文字列に変換する場合にはsnprintf関数の利用が最適です。環境によっては同等の関数としてsprintf_sが利用できる場合もあります。snprintfの第一引数に書き込み先の文字列のバッファ、第二引数にそのバッファのサイズを指定します。第三引数以降にはprintf関数と同等の書式文字列と各種実引数を指定します。"-99"変換指定子に%dを指定することでint型の整数値の文字列化を実現することができます。%ldを指定すればlong型、%fを指定すればfloat型やdouble型の浮動小数点数を文字列変換することができます。詳しくは次項を参考にしてください。%lfは不要ゼロ埋め・左詰め・右詰めによる文字列変換snprintf/sprintf関数でゼロ埋めや左詰め、右詰めを実現することも可能です。フォーマットの方法はprintf関数のものと共通です。数値を16進数・8進数の文字列に変換する方法printf関数と同等のフォーマットが可能ですので、16進数・8進数表記による文字列化も行えます。(8進数)より具体的な方法やフォーマット方法については以下のページが参考になります。buf[])のサイズは、数値の桁数に応じて適切な値を設定しておく必要があります。十分に大きなサイズを確保しておくのが賢明です。i);文字列の末尾に書き込まれる終端文字('\0')の分のサイズも考慮する必要があります。snprintfの第二引数に指定するサイズは終端文字を含んだ長さとなります。snprintf関数で数値を文字列に変換する」で紹介したsnprintf関数の他に、sprintf関数も存在しますが、sprintfはバッファオーバーフローの危険性があるため、現在ではsnprintfやsprintf_sの利用が推奨されています。以下はsprintf関数の正常な利用例です。'\0'}以下はバッファオーバーランが発生した危険な処理の例です。1"buf配列に対して過剰に書き込まれた終端文字列'\0'がbuffer_overflow変数の値を上書きしてしまっていることが分かります。このような問題が起きる恐れがあるため、sprintf関数を利用する際には、十分なバッファーサイズを確保して利用したり、安全な利用が想定できる場合にのみ注意して利用することが求められます。itoa関数は使えない場合があるitoa関数による同等の変換も可能ですが、itoa/_itoa関数は特定の環境でしか使えない非標準の関数です。移植性に問題があるため、利用はオススメはしません。同じことはsnprintf関数やsprintf関数でも実現できます。