int型をchar型に変換する方法【数字化 文字列化】


int型やfloat型の整数値を文字型や文字列型の数字に変換する方法です。

目次

スポンサーリンク

数値から数字に変換する

int型の数値をchar型の数字に変換する方法です。

int i = 8;
char c = i + '0';
printf("%c", c); // '8'
変換可能な数字は09までの数値に限られます。

以前解説した「数字から数値に変換する」方法と逆のことをしています。詳しい原理は以下のページを参考にしてください。

char型をint型に変換する方法

数値から文字列に変換する

int型の整数値やdouble型の浮動小数点数を文字列化する方法です。

snprintf関数の利用が適切です。

int i = -1234;

char buf[24];
snprintf(buf, 24, "%d", i);

puts(buf); // "-1234"
double i = 3.141;

char buf[24];
snprintf(buf, 24, "%f", i);

puts(buf); // "3.141000"

snprintf(buf, 24, "%.2f", i);

puts(buf); // "3.14"

16進数・8進数の文字列に変換する方法

printf関数と同等のフォーマットが可能ですので、16進数・8進数表記による文字列化も行えます。

snprintf(buf, 20, "%#x", i);
puts(buf); // "0x10"(16進数)
snprintf(buf, 20, "%#o", i);
puts(buf); // "020" (8進数)

より具体的なフォーマット方法については以下のページが参考になります。

【C言語】2進数 8進数 16進数 形式で出力する方法【printf】

sprintf関数

今回利用したsnprintf関数の他に、sprintf関数も存在しますが、そちらはバッファオーバーフローの危険性があるため、現在ではsnprintfの利用が推奨されています。

itoa関数

itoa関数による同等の変換も可能ですが、itoa関数は特定の環境でしか利用できず、移植性に問題があるためオススメはしません。同じことはsnprintf関数やsprintf関数でも実現出来ます。

広告

関連するオススメの記事