CでIntegerをCharに変換する方法

Satishkumar Bharadwaj 2023年10月12日
  1. Cでintcharに変換するために'0'を追加する
  2. intの値をcharの値に割り当ててCでintcharに変換する
  3. sprintf()関数を使用してCでintcharに変換する
  4. 結論
CでIntegerをCharに変換する方法

C言語で整数を文字に変換することは、さまざまなシナリオで重要となる場合があります。Cの文字はASCII値として表されるため、この変換は比較的簡単に行うことができます。

このチュートリアルでは、加算から明示的な型キャスト、そしてsprintf()関数を使った方法まで、Cで整数を文字に変換するためのいくつかの方法を探求します。

Cでintcharに変換するために'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でintcharに変換する

整数値を文字値に変換する別の方法は、整数を直接文字変数に割り当てることです。整数値に対応する文字値が表示されます。

以下は例です:

#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でintcharに変換する

sprintf()関数は、printf() 関数と同様に動作しますが、出力をコンソールに送信する代わりに、フォーマットされた文字列を返します。整数を文字に変換し、文字列に格納することができます。

sprintf()の構文

int sprintf(char *strValue, const char *format, [ arg1, arg2, ... ]);
  • strValuecharデータ型へのポインタです。
  • 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言語で整数を文字に変換するための複数の手法について探求しました。それぞれの方法にはそれぞれの利点と使用用途があり、特定のプログラミングのニーズに基づいて最適な手法を選択することができます。

関連記事 - C Integer

関連記事 - C Char