
【6日でできるC言語入門】文字コード
C言語で「文字」を扱うとき、実際には数値(文字コード)として保存・処理されます。これはコンピュータが数字しか直接扱えないためであり、「A」や「a」や「1」などの文字もすべて“コード番号”として管理されています。
ここでは、文字コードの基本、ASCIIや制御コードの意味、さらに国際化に伴う各種文字コード(Shift_JIS, UTF-8, EUCなど)について、C言語プログラムの具体例とともに解説します。

1.文字コードの基本とASCII
1.1. 文字コードとは
「文字コード」とは、文字と数値の対応表です。たとえば「A」は65、「B」は66…という具合に、
どんな文字も“固有の数値”に変換できます。
C言語ではchar型変数に1文字分の数値(-128~127 or 0~255)を保存します。
文字コードの例(ASCII表の一部)
| 文字 | 10進数 | 16進数 | 備考 |
|---|---|---|---|
| A | 65 | 0x41 | 英大文字 |
| B | 66 | 0x42 | 英大文字 |
| a | 97 | 0x61 | 英小文字 |
| 0 | 48 | 0x30 | 数字 |
| @ | 64 | 0x40 | 記号 |
| 空白 | 32 | 0x20 | Space(SPC) |
1.2. ASCIIコードと制御文字
ASCII(アスキー)コードは、米国で生まれた基本の文字コードです。
英数字・記号・制御文字を127種類(0~127)で表します。
主なASCII制御コードの例
| 10進数 | 16進数 | コード | フルスペル | 意味・用法 |
|---|---|---|---|---|
| 0 | 0x00 | NUL | Null | 文字列の終端 |
| 7 | 0x07 | BEL | Bell | 警告音 |
| 8 | 0x08 | BS | Back Space | バックスペース |
| 9 | 0x09 | HT | Horizontal Tab | タブ |
| 10 | 0x0A | LF | Line Feed | 改行(\n) |
| 13 | 0x0D | CR | Carriage Return | 復帰(\r) |
| 27 | 0x1B | ESC | Escape | エスケープ |
| 32 | 0x20 | SPC | Space | 空白文字 |
| 127 | 0x7F | DEL | Delete | 削除 |
2.C言語での文字コードの扱い
2.1. 文字・文字コードの出力例
C言語では、char型変数に文字を代入した場合、実際にはその「文字コード(数値)」が保存されています。
サンプルプログラム1:文字と文字コードの対応を確認
プロジェクト/ファイル名: Lesson35_1/main.c
#include <stdio.h>
int main(void) {
char ch = 'X';
printf("文字: %c\n", ch);
printf("10進コード: %d\n", ch);
printf("16進コード: 0x%X\n", ch);
return 0;
}実行結果
文字: X
10進コード: 88
16進コード: 0x582.2. 文字コード表を利用するC言語サンプル
サンプルプログラム2:A~Zの文字とコードを表示
プロジェクト/ファイル名: Lesson35_2/main.c
#include <stdio.h>
int main(void) {
char c;
for (c = 'A'; c <= 'Z'; c++) {
printf("'%c': %d ", c, c);
}
printf("\n");
return 0;
}実行結果
'A': 65 'B': 66 'C': 67 'D': 68 'E': 69 'F': 70 'G': 71 'H': 72
'I': 73 'J': 74 'K': 75 'L': 76 'M': 77 'N': 78 'O': 79 'P': 80
'Q': 81 'R': 82 'S': 83 'T': 84 'U': 85 'V': 86 'W': 87 'X': 88
'Y': 89 'Z': 903.日本語・多言語と文字コード
3.1. 多言語を扱うための文字コード
もともとASCIIは英語圏専用で、日本語など多言語のサポートはありませんでした。
その後、日本語や各国語を扱うための「マルチバイト文字コード」が登場します。
| 名前 | 概要 | 特徴 |
|---|---|---|
| Shift_JIS | JIS規格。Windows日本語で標準的 | 2バイトでひらがな・漢字等 |
| EUC-JP | UNIX系OSで利用。日本語の標準 | 2バイトで日本語等 |
| UTF-8 | Unicode。世界中の文字を可変長バイトで表現 | 世界標準。ASCII互換あり |
3.2. UTF-8とC言語
UTF-8は世界標準の文字コードで、ASCII互換性もあり、英語・日本語・絵文字も一つの方式で表現できます。
C言語の標準入出力関数(printfやscanfなど)は、1バイト単位で文字を処理するため、日本語や多バイト文字を正確に扱うには工夫や専用ライブラリが必要になることがあります。
4.文字コードを意識したプログラム例
サンプルプログラム3:文字コードで文字の判定
プロジェクト/ファイル名: Lesson35_3/main.c
#include <stdio.h>
int main(void) {
char c;
printf("1文字入力してください:");
scanf(" %c", &c);
if (c >= 65 && c <= 90) { // 'A'~'Z'
printf("英大文字です。\n");
} else if (c >= 97 && c <= 122) { // 'a'~'z'
printf("英小文字です。\n");
} else {
printf("その他の文字です。\n");
}
return 0;
}実行結果
「SDLチェック」を「いいえ」にして、プログラムを実行します。
1文字入力してください:A
英大文字です。まとめ
- 文字コードは、文字と数値を対応させるルール
- C言語ではchar型変数で1文字=1バイトのコードを保存
- ASCIIが基本だが、国際化のためShift_JIS、UTF-8なども普及
- 文字コードの理解はC言語で文字列・データ処理を行う上で必須!
