第11回:文字


これまでは,数字を主に扱ってきました.今週は,文字を取り上げます.


文字型

コンピュータ内部は,二進数の数字の世界でした.それでは,文字はどうやって表現するのでしょう? → 文字コード

コンピュータでは,英数字などの文字をそれぞれ0から127の番号に対応させて管理しています.

一般に文字コードを表現するには16進数を用います.下の表では,横が16進数の2桁目,縦が16進数の1桁目を表し,赤い文字で10進数の値を書きました.たとえば,大文字の「A」は,16進数では「41」,10進数では「65」で表されます.16進数で00から20までには,特殊な意味のある文字が割り当てられています.

文字コード表

00 10 20 30 40 50 60 70
0 NUL 0 DLE 16 SP 32 0 48 @ 64 P 80 ` 96 p 112
1 SOH 1 DC1 17 ! 33 1 49 A 65 Q 81 a 97 q 113
2 STX 2 DC2 18 " 34 2 50 B 66 R 82 b 98 r 114
3 ETX 3 DC3 19 # 35 3 51 C 67 S 83 c 99 s 115
4 EOT 4 DC4 20 $ 36 4 52 D 68 T 84 d 100 t 116
5 ENQ 5 NAK 21 % 37 5 53 E 69 U 85 e 101 u 117
6 ACK 6 SYN 22 & 38 6 54 F 70 V 86 f 102 v 118
7 BEL 7 ETB 23 ' 39 7 55 G 71 W 87 g 103 w 119
8 BS 8 CAN 24 ( 40 8 56 H 72 X 88 h 104 x 120
9 HT 9 EM 25 ) 41 9 57 I 73 Y 89 i 105 y 121
A LF 10 SUB 26 * 42 : 58 J 74 Z 90 j 106 z 122
B VT 11 ESC 27 + 43 ; 59 K 75 [ 91 k 107 { 123
C FF 12 FS 28 , 44 < 60 L 76 \ 92 l 108 | 124
D CR 13 GS 29 - 45 = 61 M 77 ] 93 m 109 } 125
E SO 14 RS 30 . 46 > 62 N 78 ^ 94 n 110 ~ 126
F SI 15 US 31 / 47 ? 63 O 79 _ 95 o 111 DEL 127

C言語で文字といば,英語の半角の文字で,これを格納するための変数が char 型です.文字をプログラム中で表すときは,シングルクオーテーションで囲みます.(例:'A'

例:

#include <stdio.h>

void main()
{
    char c;

    printf("1文字入力してください");
    c = getchar();        /* キーボードから半角文字1つを得る命令 */

    printf("%d\n", c);
    printf("%c\n", c);  
}

実行結果は,どうなりましたか?

参考:書式指定子

%d 10進数
%o 8進数
%x 16進数
%f 浮動小数点
%c 1文字
%s 文字列

[注意] 文字型 char には,半角1文字だけしか代入できません.また,漢字なども代入できません.


文字の計算

コンピュータ内では,文字は全て数字として扱われます.では,

    a = 'd';

    a++;

    printf("%c",a);


とすると,どうなるでしょう.

【演習】

キーボードから1文字小文字を入力すると,大文字に変換して画面に表示するプログラムを作成する.