これまでは,数字を主に扱ってきました.今週は,文字を取り上げます.
コンピュータ内部は,二進数の数字の世界でした.それでは,文字はどうやって表現するのでしょう? → 文字コード
コンピュータでは,英数字などの文字をそれぞれ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文字小文字を入力すると,大文字に変換して画面に表示するプログラムを作成する.