C言語-文字列処理
前へ 目次へ 次へ 

1 文字列処理

1.1 文字コード

 コンピュータ内では、すべてのデータが0と1の2進数で記憶されるので、文字(キャラクタ)には1文字ずつ番号が割り当てられている。これを文字コードまたはキャラクタコードなどと呼ぶ。

文字コード

 日本では、漢字を扱う必要があるが、各漢字にもコードが決められている。ただし、漢字は種類が多く、1バイトでは足りないのでコードは2バイトで決められている。
 MS-DOSやWindowsではシフトJISコード、UNIXの多くはEUCコードである。

  第1バイト 第2バイト
JISコード 0x21 - 0x98 0x21 - 0x7E
シフトJISコード(S-JIS) 0x81 - 0x9F, 0xE0 - 0xFC 0x40 - 0x7E, 0x80 - 0xFC
EUCコード 0xA1 - 0xFE 0xA1 - 0xFE

 char型変数は1バイト分の領域しかないので、文字列や漢字コードを扱う場合には、配列を使用しなければならない。


入力した1文字の文字と文字コードを表示する。 [pro1-1.c]

 1:
 2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
10:
#include <stdio.h>
int main(void)
{
    char c;

    printf("文字 = ");          /* プロンプト表示 */
    c = getchar();             /* 1文字入力 */
    printf("%c(%X) ", c, c);   /* 出力 */
    return(0);
}
実行結果

文字 = a
a(61)



 ※ 実行結果の赤色の文字は、キーボードからの入力データを表している。

 実行結果のように文字aを入力すると、変数cには文字aの文字コード0x61(16進数)が格納される。8行目の関数printfで%cで表示させると変数cの値を文字コードとして、対応する文字が表示され、%Xで表示すると変数cの値を16進数で表示する。ちなみに、%dで表示すると10進数で表示される。

 

入力した整数10進数を文字コードとして、対応する文字とその文字コードを表示する。 [pro1-2.c]

 1:
 2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
10:
#include <stdio.h>
int main(void)
{
    int d;

    printf("整数10進数 = ");
    scanf("%d", &d);
    printf("%c(%X) ", d, d);  
    return(0);
}
実行結果
<整数10進数 = 100
d(64)
整数10進数 = 300
,(12C)

 実行結果のように整数値を入力すると、それに対応する文字と16進数を表示する。2つ目の実行例では、入力データが1バイトを超えているが、%cは下位1バイト(2C)だけを処理する。


前へ 目次へ 次へ 
Copyright © 2001 Hiroshi Masuda 

 

 

inserted by FC2 system