CでIntegerをCharに変換する方法
C言語で整数を文字に変換することは、さまざまなシナリオで重要となる場合があります。Cの文字はASCII値として表されるため、この変換は比較的簡単に行うことができます。
このチュートリアルでは、加算から明示的な型キャスト、そしてsprintf()
関数を使った方法まで、Cで整数を文字に変換するためのいくつかの方法を探求します。
Cでint
をchar
に変換するために'0'
を追加する
'0'
のASCII値は48です。したがって、整数にその値を追加することで、対応する文字に変換することができます。
以下は、この方法を実演する完全なCプログラムです。
#include <stdio.h>
int main(void) {
int number = 71;
char charValue = number + '0';
printf("The character value is: %c", charValue);
return 0;
}
出力:
The character value is: w
'0'
のASCII値が48であり、48に71を加えると119になります。ASCII文字セットでは、値119は文字w
に対応します。
したがって、プログラムの出力は文字値w
を表示します。
さらに、0から9の範囲の整数を文字に変換するには、同じ手法を使用できます:
#include <stdio.h>
int main(void) {
int number = 7;
char charValue = number + '0';
printf("The value is: %c", charValue);
return 0;
}
出力:
The value is: 7
ここでは、コードがcharValue
という名前の文字変数を宣言し、またnumber
に格納された整数をASCII値の'0'
に加えることで値を計算しています。
Cでは、文字はASCIIエンコーディングに基づいて整数として表されるため、この操作により整数7が文字'7'
に変換されます。
整数値を文字に変換する別のプログラムは以下の通りです:
#include <stdio.h>
int main(void) {
char charValue[] = "stringValueX";
int anyNumber;
for (anyNumber = 0; anyNumber < 10; ++anyNumber) {
charValue[11] = anyNumber + '0';
puts(charValue);
}
return 0;
}
出力:
stringValue0
stringValue1
stringValue2
stringValue3
stringValue4
stringValue5
stringValue6
stringValue7
stringValue8
stringValue9
上記のコードでは、charValue
という名前の文字配列を文字列"stringValueX"
で初期化し、anyNumber
という名前の整数変数を宣言します。
その後、0から9まで反復するfor
ループに入ります。ループ内で、コードはcharValue
のインデックス11の文字をanyNumber
の値にASCII値の'0'
を加えることで置換し、X
を0から9の数字に置き換えます。
puts(charValue)
関数は、各反復で変更されたcharValue
を別々の行に表示します。その結果、stringValueX
が、X
が0から9の数字で置き換わった状態で表示される出力が生成されます。
int
の値をchar
の値に割り当ててCでint
をchar
に変換する
整数値を文字値に変換する別の方法は、整数を直接文字変数に割り当てることです。整数値に対応する文字値が表示されます。
以下は例です:
#include <stdio.h>
int main(void) {
int number = 65;
char charvalue = number;
printf("The character value: %c", charvalue);
return 0;
}
出力:
The character value: A
整数を文字に変換するために明示的な型キャストも使用できます。以下に例示するコードを参照してください。
#include <stdio.h>
int main(void) {
int number = 67;
char charValue = (char)number;
printf("The character value = %c", charValue);
return 0;
}
出力:
The character value = C
ここでは、プログラムがnumber
の整数値を(char)
を使用して明示的に文字にキャストしています。この型キャストは、コンパイラにnumber
を文字として扱うよう指示します。
sprintf()
関数を使用してCでint
をchar
に変換する
sprintf()
関数は、printf()
関数と同様に動作しますが、出力をコンソールに送信する代わりに、フォーマットされた文字列を返します。整数を文字に変換し、文字列に格納することができます。
sprintf()
の構文
int sprintf(char *strValue, const char *format, [ arg1, arg2, ... ]);
strValue
はchar
データ型へのポインタです。format
は、プレースホルダとともに出力のタイプを表示するために使用されます。[arg1,arg2...]
は変換される整数です。
関数は、strValue
で指定された文字列にデータを書き込み、strValue
に書き込まれた文字数(ヌル文字を除く)を返します。返される値は一般的に破棄されます。
操作中にエラーが発生した場合は、-1
を返します。
以下は例です:
#include <stdio.h>
int main(void) {
int number = 72;
char charValue[1];
sprintf(charValue, "%c", number);
printf("The character value = %s", charValue);
return 0;
}
出力:
The character value = H
この例では、sprintf()
を使用して整数72を文字H
に変換し、charValue
配列に格納しました。変換された文字を保持するには、文字配列(charValue
)が十分に大きいことを確認することが重要です。
結論
このチュートリアルでは、C言語で整数を文字に変換するための複数の手法について探求しました。それぞれの方法にはそれぞれの利点と使用用途があり、特定のプログラミングのニーズに基づいて最適な手法を選択することができます。