C語言中的字符型數(shù)據(jù)與ASCII碼表
1、字符型常量
字符型常量指單個(gè)字符,是用一對(duì)單引號(hào)及其所括起來的字符表示。
例如:‘A’、‘a’、‘0’、’$‘等都是字符型常量。
C語言的字符使用的就是ASCII字符集,總共有128個(gè),每個(gè)相應(yīng)的ASCII碼都表示一個(gè)字符:
(1)每一個(gè)字符都有唯一的次序值,即ASCII碼。
(2)數(shù)字’0’,‘1’,‘2’,…,‘9’、大寫字母’A’,‘B’,‘C’,…,‘Z’、小寫字母’a’,‘b’,‘c’,…,'z’的ASCII都是升序連續(xù)排列的。
注: 數(shù)字和數(shù)字字符不一樣的,帶單引號(hào)的是字符,例如:1是整型數(shù)字,而’1’是字符,其ASCII碼是49,即按整型輸出的話就是49,按字符型數(shù)據(jù)輸出就是1。
ASCII碼表:
符號(hào)(解釋) | 十進(jìn)制 | 十六進(jìn)制 | 符號(hào)(解釋) | 十進(jìn)制 | 十六進(jìn)制 |
---|---|---|---|---|---|
NULL(空操作) | 0 | 0x00 | @ | 64 | 0x40 |
SOH(標(biāo)題開始) | 1 | 0x01 | A | 65 | 0x41 |
STX(正文開始) | 2 | 0x02 | B | 66 | 0x42 |
ETX(正文結(jié)束) | 3 | 0x03 | C | 67 | 0x43 |
EOT(傳輸結(jié)束) | 4 | 0x04 | D | 68 | 0x44 |
ENQ(請(qǐng)求) | 5 | 0x05 | E | 69 | 0x45 |
ACK(收到通知) | 6 | 0x06 | F | 70 | 0x46 |
BEL(響鈴) | 7 | 0x07 | G | 71 | 0x47 |
BS(退格) | 8 | 0x08 | H | 72 | 0x48 |
HT(水平制表符) | 9 | 0x09 | I | 73 | 0x49 |
LF(換行) | 10 | 0x0A | J | 74 | 0x4A |
VT(垂直制表符) | 11 | 0x0B | K | 75 | 0x4B |
FF(換頁(yè)) | 12 | 0x0C | L | 76 | 0x4C |
CR(回車) | 13 | 0x0D | M | 77 | 0x4D |
SO(不用切換) | 14 | 0x0E | N | 78 | 0x4E |
SI(啟用切換) | 15 | 0x0F | O | 79 | 0x4F |
DLE(數(shù)據(jù)鏈路轉(zhuǎn)義) | 16 | 0x10 | P | 80 | 0x50 |
DC1(設(shè)備控制1) | 17 | 0x11 | Q | 81 | 0x51 |
DC2(設(shè)備控制2) | 18 | 0x12 | R | 82 | 0x52 |
DC3(設(shè)備控制3) | 19 | 0x13 | S | 83 | 0x53 |
DC4(設(shè)備控制4) | 20 | 0x14 | T | 84 | 0x54 |
NAK(拒絕接收) | 21 | 0x15 | U | 85 | 0x55 |
SYN(同步空閑) | 22 | 0x16 | V | 86 | 0x56 |
ETB(結(jié)束傳輸塊) | 23 | 0x17 | W | 87 | 0x57 |
CAN(取消) | 24 | 0x18 | X | 88 | 0x58 |
EM(媒介結(jié)束) | 25 | 0x19 | Y | 89 | 0x59 |
SUB(代替) | 26 | 0x1A | Z | 90 | 0x5A |
ESC(換碼(溢出)) | 27 | 0x1B | [ | 91 | 0x5B |
FS(文件分隔符) | 28 | 0x1C | \ | 92 | 0x5C |
GS(分組符) | 29 | 0x1D | ] | 93 | 0x5D |
RS(記錄分隔符) | 30 | 0x1E | ^ | 94 | 0x5E |
US(單元分隔符) | 31 | 0x1F | _ | 95 | 0x5F |
(space)(空格) | 32 | 0x20 | ` | 96 | 0x60 |
! | 33 | 0x21 | a | 97 | 0x61 |
" | 34 | 0x22 | b | 98 | 0x62 |
# | 35 | 0x23 | c | 99 | 0x63 |
$ | 36 | 0x24 | d | 100 | 0x64 |
% | 37 | 0x25 | e | 101 | 0x65 |
& | 38 | 0x26 | f | 102 | 0x66 |
’ | 39 | 0x27 | g | 103 | 0x67 |
( | 40 | 0x28 | h | 104 | 0x68 |
) | 41 | 0x29 | i | 105 | 0x69 |
* | 42 | 0x2A | j | 106 | 0x6A |
+ | 43 | 0x2B | k | 107 | 0x6B |
, | 44 | 0x2C | l | 108 | 0x6C |
- | 45 | 0x2D | m | 109 | 0x6D |
. | 46 | 0x2E | n | 110 | 0x6E |
/ | 47 | 0x2F | o | 111 | 0x6F |
0 | 48 | 0x30 | p | 112 | 0x70 |
1 | 49 | 0x31 | q | 113 | 0x71 |
2 | 50 | 0x32 | r | 114 | 0x72 |
3 | 51 | 0x33 | s | 115 | 0x73 |
4 | 52 | 0x32 | t | 116 | 0x74 |
5 | 53 | 0x35 | u | 117 | 0x75 |
6 | 54 | 0x36 | v | 118 | 0x76 |
7 | 55 | 0x37 | w | 119 | 0x77 |
8 | 56 | 0x38 | x | 120 | 0x78 |
9 | 57 | 0x39 | y | 121 | 0x79 |
: | 58 | 0x3A | z | 122 | 0x7A |
; | 59 | 0x3B | { | 123 | 0x7B |
< | 60 | 0x3C | | | 124 | 0x7C |
= | 61 | 0x3D | } | 125 | 0x7D |
> | 62 | 0x3E | ~ | 126 | 0x7E |
? | 63 | 0x3F | DEL(刪除) | 127 | 0x7F |
在C語言中,所使用的字符被一一映射到一張表中,這張表被稱為ASCII碼表。
由于標(biāo)準(zhǔn) ASCII 字符集字符數(shù)目有限,無法滿足要求。為此,國(guó)際標(biāo)準(zhǔn)化組織又制定了 ISO2022 標(biāo)準(zhǔn),它規(guī)定了在保持與 ISO646 兼容的前提下將 ASCII 字符集擴(kuò)充為 8 位代碼的統(tǒng)一方法。 ISO 1陸續(xù)制定了一批適用于不同地區(qū)的擴(kuò)充 ASCII 字符集,每種擴(kuò)充 ASCII 字符集分別可以擴(kuò)充 128 個(gè)字符,這些擴(kuò)充字符的編碼均為高位為 1 的 8 位代碼,稱為擴(kuò)展 ASCII 碼。
但由于擴(kuò)展ASCII不再是國(guó)際標(biāo)準(zhǔn),故不在此展示。
十進(jìn)制碼值Dec | 縮寫/字符 | 二進(jìn)制碼值Bin | 八進(jìn)制碼值Oct | 十六進(jìn)制碼值Hex |
---|---|---|---|---|
0 | NULL 空字符 | 0000 0000 | 00 | 0x0 |
1 | SOH 標(biāo)題開始 | 0000 0001 | 01 | 0x1 |
2 | STX 正文開始 | 0000 0010 | 02 | 0x2 |
3 | ETX 正文介紹 | 0000 0011 | 03 | 0x3 |
4 | EOT 傳輸結(jié)束 | 0000 0100 | 04 | 0x4 |
5 | ENQ 請(qǐng)求 | 0000 0101 | 05 | 0x5 |
6 | ACK 收到通知 | 0000 0110 | 06 | 0x6 |
7 | BEL 響鈴 | 0000 0111 | 07 | 0x7 |
8 | BS 退格 | 0000 1000 | 010 | 0x8 |
9 | HT 水平制表符 | 0000 1001 | 011 | 0x9 |
10 | LF 換行鍵 | 0000 1010 | 012 | 0xA |
11 | VT 垂直制表符 | 0000 1011 | 013 | 0xB |
12 | FF 換頁(yè)鍵 | 0000 1100 | 014 | 0xC |
13 | CR 回車鍵 | 0000 1101 | 015 | 0xD |
14 | SO 不用切換 | 0000 1110 | 016 | 0xE |
15 | SI 啟用切換 | 0000 1111 | 017 | 0xF |
16 | DLE 數(shù)據(jù)鏈路轉(zhuǎn)義 | 0001 0000 | 020 | 0x10 |
17 | DC1 設(shè)備控制1 | 0001 0001 | 021 | 0x11 |
18 | DC2 設(shè)備控制2 | 0001 0010 | 022 | 0x12 |
19 | DC3 設(shè)備控制3 | 0001 0011 | 023 | 0x13 |
20 | DC4 設(shè)備控制4 | 0001 0100 | 024 | 0x14 |
21 | NAK 拒絕接受 | 0001 0101 | 025 | 0x15 |
22 | SYN 同步空閑 | 0001 0110 | 026 | 0x16 |
23 | ETB 結(jié)束傳輸塊 | 0001 0111 | 027 | 0x17 |
24 | CAN 取消 | 0001 1000 | 030 | 0x18 |
25 | EM 媒介結(jié)束 | 0001 1001 | 031 | 0x19 |
26 | SUB 代替 | 0001 1010 | 032 | 0x1A |
27 | ESC 換碼(溢出) | 0001 1011 | 033 | 0x1B |
28 | FS 文件分隔符 | 0001 1100 | 034 | 0x1C |
29 | GS 分組符 | 0001 1101 | 035 | 0x1D |
30 | RS 記錄分隔符 | 0001 1110 | 036 | 0x1E |
31 | US 單元分隔符 | 0001 1111 | 037 | 0x1F |
32 | (space) 空格 | 0010 0000 | 040 | 0x20 |
33 | ! 嘆號(hào) | 0010 0001 | 041 | 0x21 |
34 | " 雙引號(hào) | 0010 0010 | 042 | 0x22 |
35 | # 井號(hào) | 0010 0011 | 043 | 0x23 |
36 | $ 美元符 | 0010 0100 | 044 | 0x24 |
37 | % 百分號(hào) | 0010 0101 | 045 | 0x25 |
38 | & 和號(hào) | 0010 0110 | 046 | 0x26 |
39 | ’ 閉單引號(hào) | 0010 0111 | 047 | 0x27 |
40 | ( 開括號(hào) | 0010 1000 | 050 | 0x28 |
41 | ) 閉括號(hào) | 0010 1001 | 051 | 0x29 |
42 | * 星號(hào) | 0010 1010 | 052 | 0x2A |
43 | + 加號(hào) | 0010 1011 | 053 | 0x2B |
44 | , 逗號(hào) | 0010 1100 | 054 | 0x2C |
45 | - 減號(hào)/破折號(hào) | 0010 1101 | 055 | 0x2D |
46 | . 句號(hào) | 0010 1110 | 056 | 0x2E |
47 | / 斜杠 | 0010 1111 | 057 | 0x2F |
48 | 數(shù)字0 | 0011 0000 | 060 | 0x30 |
49 | 數(shù)字1 | 0011 0001 | 061 | 0x31 |
50 | 數(shù)字2 | 0011 0010 | 062 | 0x32 |
51 | 數(shù)字3 | 0011 0011 | 063 | 0x33 |
52 | 數(shù)字4 | 0011 0100 | 064 | 0x34 |
53 | 數(shù)字5 | 0011 0101 | 065 | 0x35 |
54 | 數(shù)字6 | 0011 0110 | 066 | 0x36 |
55 | 數(shù)字7 | 0011 0111 | 067 | 0x37 |
56 | 數(shù)字8 | 0011 1000 | 070 | 0x38 |
57 | 數(shù)字9 | 0011 1001 | 071 | 0x39 |
58 | : 冒號(hào) | 0011 1010 | 072 | 0x3A |
59 | ; 分號(hào) | 0011 1011 | 073 | 0x3B |
60 | < 小于 | 0011 1100 | 074 | 0x3C |
61 | = 等于 | 0011 1101 | 075 | 0x3D |
62 | > 大于 | 0011 1110 | 076 | 0x3E |
63 | ? 問號(hào) | 0011 1111 | 077 | 0x3F |
64 | @ 電子郵件符號(hào) | 0100 0000 | 0100 | 0x40 |
65 | 大寫字母A | 0100 0001 | 0101 | 0x41 |
66 | 大寫字母B | 0100 0010 | 0102 | 0x42 |
67 | 大寫字母C | 0100 0011 | 0103 | 0x43 |
68 | 大寫字母D | 0100 0100 | 0104 | 0x44 |
69 | 大寫字母E | 0100 0101 | 0105 | 0x45 |
70 | 大寫字母F | 0100 0110 | 0106 | 0x46 |
71 | 大寫字母G | 0100 0111 | 0107 | 0x47 |
72 | 大寫字母H | 0100 1000 | 0110 | 0x48 |
73 | 大寫字母I | 0100 1001 | 0111 | 0x49 |
74 | 大寫字母J | 0100 1010 | 0112 | 0x4A |
75 | 大寫字母K | 0100 1011 | 0113 | 0x4B |
76 | 大寫字母L | 0100 1100 | 0114 | 0x4C |
77 | 大寫字母M | 0100 1101 | 0115 | 0x4D |
78 | 大寫字母N | 0100 1110 | 0116 | 0x4E |
79 | 大寫字母O | 0100 1111 | 0117 | 0x4F |
80 | 大寫字母P | 0101 0000 | 0120 | 0x50 |
81 | 大寫字母Q | 0101 0001 | 0121 | 0x51 |
82 | 大寫字母R | 0101 0010 | 0122 | 0x52 |
83 | 大寫字母S | 0101 0011 | 0123 | 0x53 |
84 | 大寫字母T | 0101 0100 | 0124 | 0x54 |
85 | 大寫字母U | 0101 0101 | 0125 | 0x55 |
86 | 大寫字母V | 0101 0110 | 0126 | 0x56 |
87 | 大寫字母W | 0101 0111 | 0127 | 0x57 |
88 | 大寫字母X | 0101 1000 | 0130 | 0x58 |
89 | 大寫字母Y | 0101 1001 | 0131 | 0x59 |
90 | 大寫字母Z | 0101 1010 | 0132 | 0x5A |
91 | [ 開方括號(hào) | 0101 1011 | 0133 | 0x5B |
92 | \ 反斜杠 | 0101 1100 | 0134 | 0x5C |
93 | ] 閉方括號(hào) | 0101 1101 | 0135 | 0x5D |
94 | ^ 脫字節(jié) | 0101 1110 | 0136 | 0x5E |
95 | _ 下劃線 | 0101 1111 | 0137 | 0x5F |
96 | ’ 開單引號(hào) | 0110 0000 | 0140 | 0x60 |
97 | 小寫字母a | 0110 0001 | 0141 | 0x61 |
98 | 小寫字母b | 0110 0010 | 0142 | 0x62 |
99 | 小寫字母c | 0110 0011 | 0143 | 0x63 |
100 | 小寫字母d | 0110 0100 | 0144 | 0x64 |
101 | 小寫字母e | 0110 0101 | 0145 | 0x65 |
102 | 小寫字母f | 0110 0110 | 0146 | 0x66 |
103 | 小寫字母g | 0110 0111 | 0147 | 0x67 |
104 | 小寫字母h | 0110 1000 | 0150 | 0x68 |
105 | 小寫字母i | 0110 1001 | 0151 | 0x69 |
106 | 小寫字母j | 0110 1010 | 0152 | 0x6A |
107 | 小寫字母k | 0110 1011 | 0153 | 0x6B |
108 | 小寫字母l | 0110 1100 | 0154 | 0x6C |
109 | 小寫字母m | 0110 1101 | 0155 | 0x6D |
110 | 小寫字母n | 0110 1110 | 0156 | 0x6E |
111 | 小寫字母o | 0110 1111 | 0157 | 0x6F |
112 | 小寫字母p | 0111 0000 | 0160 | 0x70 |
113 | 小寫字母q | 0111 0001 | 0161 | 0x71 |
114 | 小寫字母r | 0111 0010 | 0162 | 0x72 |
115 | 小寫字母s | 0111 0011 | 0163 | 0x73 |
116 | 小寫字母t | 0111 0100 | 0164 | 0x74 |
117 | 小寫字母u | 0111 0101 | 0165 | 0x75 |
118 | 小寫字母v | 0111 0110 | 0166 | 0x76 |
119 | 小寫字母w | 0111 0111 | 0167 | 0x77 |
120 | 小寫字母x | 0111 1000 | 0170 | 0x78 |
121 | 小寫字母y | 0111 1001 | 0171 | 0x79 |
122 | 小寫字母z | 0111 1010 | 0172 | 0x7A |
123 | { 開花括號(hào) | 0111 1011 | 0173 | 0x7B |
124 | 丨垂線 | 0111 1100 | 0174 | 0x7C |
125 | } 閉花括號(hào) | 0111 1101 | 0175 | 0x7D |
126 | ~ 波浪號(hào) | 0111 1110 | 0176 | 0x7E |
127 | DEL 刪除 | 0111 1111 | 0177 | 0x7F |
2、字符型變量
用char定義的變量為字符型變量。
例如:char op; 定義了一個(gè)字符型變量op,其數(shù)據(jù)類型為char型,即字符型數(shù)據(jù)。
可以對(duì)其進(jìn)行賦值,例如op='*'就是將字符型常量’*‘賦值給變量op。
字符型變量在計(jì)算機(jī)中是按照ASCII碼的值來存儲(chǔ)的,可以和整形數(shù)據(jù)進(jìn)行運(yùn)算,其運(yùn)算規(guī)格類似,例如:op = '*'+1;,那么op按字符型數(shù)據(jù)輸出就是’+’,按整型數(shù)據(jù)輸出就是43。
3、字符型數(shù)據(jù)的輸入輸出
(1)scanf()和printf()函數(shù)輸入輸出字符
scanf()和printf()函數(shù)進(jìn)行字符型數(shù)據(jù)的輸入輸出和整型浮點(diǎn)型的處理方式完全一樣,只是格式控制字符串中相應(yīng)的格式控制說明為%c
。
(2)字符輸入函數(shù)getchar()
getchar()函數(shù)可以從鍵盤輸入一個(gè)字符。其一般用法為:
char ch;ch = getchar();
這句話就是從鍵盤輸入一個(gè)字符,并將其賦給變量ch。
(3)字符輸出函數(shù)putchar()
putchar()函數(shù)是輸出一個(gè)字符。其一般用法為:
putchar(輸出參數(shù));
輸出參數(shù)是字符型變量或者字符型常量。
注: 使用getchar()函數(shù)和putchar()函數(shù)同樣需要先包含頭文件#include <stdio.h>
函數(shù)getchar()和putchar()分別只能輸入和輸出一個(gè)字符,若要處理多個(gè)字符的輸出和輸出,那么一般需要采用循環(huán)的方式多次調(diào)用該函數(shù)。
例如下面的代碼為輸入8個(gè)字符,然后將這8個(gè)字符再輸出,每?jī)蓚€(gè)字符中間添加一個(gè)’-’。
#include <stdio.h> int main(void) { char ch int first = 1, k; /*first的值表示將要處理的是否為輸入的第一個(gè)字符*/ printf("Enter 8 characters:"); for (k=1; k<=8; k++) { ch = getchar(); /*變量ch接收從鍵盤輸入的一個(gè)字符*/ if (first == 1) { putchar(ch); /*輸出存放在變量ch中的字符*/ first = 0; /*處理完第1個(gè)字符,清楚標(biāo)志位*/ } else { /*處理第2個(gè)及以后的字符*/ putchar('-'); /*輸出字符常量'-'*/ putchar(ch); /*輸出存放在變量ch中的字符*/ } } }
運(yùn)行結(jié)果:
Enter 8 characters:gorgeous
g-o-r-g-e-o-u-s
例:四則運(yùn)算
求解簡(jiǎn)單的四則運(yùn)算表達(dá)式。輸入一個(gè)形如 "操作數(shù) 運(yùn)算符 操作數(shù)"的四則運(yùn)算表達(dá)式,輸出運(yùn)算結(jié)果,要求對(duì)除數(shù)0的情況做特別處理。
#include <stdio.h> int main(void) { double value1, value2; char op; printf("Type in an expression:"); scanf("%lf%c%lf", &value1, &op, &value2); if (op == '+'){ /*判斷運(yùn)算符是否為'+'*/ printf("=%.2f\n", value1+value2); /*對(duì)操作數(shù)做加法操作*/ } else if (op == '-'){ /*否則判斷運(yùn)算符是否為'-'*/ printf("=%.2f\n", value1-value2); } else if (op == '*'){ /*否則判斷運(yùn)算符是否為'*'*/ printf("=%.2f\n", value1*value2); } else if (op == '/'){ /*否則判斷運(yùn)算符是否為'/'*/ if (value2 != 0){ printf("=%.2f\n", value1/value2); } else { /*對(duì)除數(shù)為0作特殊處理*/ printf("Divisior can not be 0!\n"); } } else { printf ("Unknown operator!\n"); /*運(yùn)算符輸出錯(cuò)誤*/ } return 0; }
運(yùn)行結(jié)果:
Type in an expression:8.65+3.29
=11.94
Type in an expression:76.9/0
Divisior can not be 0!
Type in an expression:47.2 - 76
Unknown operator!
注: 此處一定要注意,這里的操作數(shù)和運(yùn)算符之間必須連續(xù)輸入,兩者之間不能有空格。
這是因?yàn)榭崭褚彩且粋€(gè)字符,它會(huì)占據(jù)運(yùn)算符的位置,在程序中就會(huì)是一個(gè)無法識(shí)別的運(yùn)算符。
如上述運(yùn)行結(jié)果第三個(gè)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++小游戲教程之猜數(shù)游戲的實(shí)現(xiàn)
這篇文章主要和大家詳細(xì)介紹如何利用C++做一個(gè)簡(jiǎn)易的猜數(shù)游戲,分為用戶猜數(shù)和系統(tǒng)猜數(shù)。文中的示例代碼講解詳細(xì) ,感興趣的小伙伴可以嘗試一下2022-11-11C語言實(shí)現(xiàn)linux網(wǎng)卡連接檢測(cè)的方法
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)linux網(wǎng)卡連接檢測(cè)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
這篇文章主要介紹了C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例,并且轉(zhuǎn)換后會(huì)統(tǒng)計(jì)二進(jìn)制1的個(gè)數(shù),實(shí)例簡(jiǎn)單明了,需要的朋友可以參考下2014-06-06用C語言實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲
這篇文章主要為大家詳細(xì)介紹了用C語言實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07