日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言中的字符型數據與ASCII碼表_C 語言

作者:passxgx ? 更新時間: 2023-03-23 編程語言

1、字符型常量

字符型常量指單個字符,是用一對單引號及其所括起來的字符表示。

例如:‘A’、‘a’、‘0’、’$‘等都是字符型常量。

C語言的字符使用的就是ASCII字符集,總共有128個,每個相應的ASCII碼都表示一個字符:

(1)每一個字符都有唯一的次序值,即ASCII碼。

(2)數字’0’,‘1’,‘2’,…,‘9’、大寫字母’A’,‘B’,‘C’,…,‘Z’、小寫字母’a’,‘b’,‘c’,…,'z’的ASCII都是升序連續排列的。

注: 數字和數字字符不一樣的,帶單引號的是字符,例如:1是整型數字,而’1’是字符,其ASCII碼是49,即按整型輸出的話就是49,按字符型數據輸出就是1。

ASCII碼表:

符號(解釋) 十進制 十六進制 符號(解釋) 十進制 十六進制
NULL(空操作) 0 0x00 @ 64 0x40
SOH(標題開始) 1 0x01 A 65 0x41
STX(正文開始) 2 0x02 B 66 0x42
ETX(正文結束) 3 0x03 C 67 0x43
EOT(傳輸結束) 4 0x04 D 68 0x44
ENQ(請求) 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(換頁) 12 0x0C L 76 0x4C
CR(回車) 13 0x0D M 77 0x4D
SO(不用切換) 14 0x0E N 78 0x4E
SI(啟用切換) 15 0x0F O 79 0x4F
DLE(數據鏈路轉義) 16 0x10 P 80 0x50
DC1(設備控制1) 17 0x11 Q 81 0x51
DC2(設備控制2) 18 0x12 R 82 0x52
DC3(設備控制3) 19 0x13 S 83 0x53
DC4(設備控制4) 20 0x14 T 84 0x54
NAK(拒絕接收) 21 0x15 U 85 0x55
SYN(同步空閑) 22 0x16 V 86 0x56
ETB(結束傳輸塊) 23 0x17 W 87 0x57
CAN(取消) 24 0x18 X 88 0x58
EM(媒介結束) 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碼表。

由于標準 ASCII 字符集字符數目有限,無法滿足要求。為此,國際標準化組織又制定了 ISO2022 標準,它規定了在保持與 ISO646 兼容的前提下將 ASCII 字符集擴充為 8 位代碼的統一方法。 ISO 1陸續制定了一批適用于不同地區的擴充 ASCII 字符集,每種擴充 ASCII 字符集分別可以擴充 128 個字符,這些擴充字符的編碼均為高位為 1 的 8 位代碼,稱為擴展 ASCII 碼。

但由于擴展ASCII不再是國際標準,故不在此展示。

十進制碼值Dec 縮寫/字符 二進制碼值Bin 八進制碼值Oct 十六進制碼值Hex
0 NULL 空字符 0000 0000 00 0x0
1 SOH 標題開始 0000 0001 01 0x1
2 STX 正文開始 0000 0010 02 0x2
3 ETX 正文介紹 0000 0011 03 0x3
4 EOT 傳輸結束 0000 0100 04 0x4
5 ENQ 請求 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 換頁鍵 0000 1100 014 0xC
13 CR 回車鍵 0000 1101 015 0xD
14 SO 不用切換 0000 1110 016 0xE
15 SI 啟用切換 0000 1111 017 0xF
16 DLE 數據鏈路轉義 0001 0000 020 0x10
17 DC1 設備控制1 0001 0001 021 0x11
18 DC2 設備控制2 0001 0010 022 0x12
19 DC3 設備控制3 0001 0011 023 0x13
20 DC4 設備控制4 0001 0100 024 0x14
21 NAK 拒絕接受 0001 0101 025 0x15
22 SYN 同步空閑 0001 0110 026 0x16
23 ETB 結束傳輸塊 0001 0111 027 0x17
24 CAN 取消 0001 1000 030 0x18
25 EM 媒介結束 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 ! 嘆號 0010 0001 041 0x21
34 " 雙引號 0010 0010 042 0x22
35 # 井號 0010 0011 043 0x23
36 $ 美元符 0010 0100 044 0x24
37 % 百分號 0010 0101 045 0x25
38 & 和號 0010 0110 046 0x26
39 ’ 閉單引號 0010 0111 047 0x27
40 ( 開括號 0010 1000 050 0x28
41 ) 閉括號 0010 1001 051 0x29
42 * 星號 0010 1010 052 0x2A
43 + 加號 0010 1011 053 0x2B
44 , 逗號 0010 1100 054 0x2C
45 - 減號/破折號 0010 1101 055 0x2D
46 . 句號 0010 1110 056 0x2E
47 / 斜杠 0010 1111 057 0x2F
48 數字0 0011 0000 060 0x30
49 數字1 0011 0001 061 0x31
50 數字2 0011 0010 062 0x32
51 數字3 0011 0011 063 0x33
52 數字4 0011 0100 064 0x34
53 數字5 0011 0101 065 0x35
54 數字6 0011 0110 066 0x36
55 數字7 0011 0111 067 0x37
56 數字8 0011 1000 070 0x38
57 數字9 0011 1001 071 0x39
58 : 冒號 0011 1010 072 0x3A
59 ; 分號 0011 1011 073 0x3B
60 < 小于 0011 1100 074 0x3C
61 = 等于 0011 1101 075 0x3D
62 > 大于 0011 1110 076 0x3E
63 ? 問號 0011 1111 077 0x3F
64 @ 電子郵件符號 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 [ 開方括號 0101 1011 0133 0x5B
92 \ 反斜杠 0101 1100 0134 0x5C
93 ] 閉方括號 0101 1101 0135 0x5D
94 ^ 脫字節 0101 1110 0136 0x5E
95 _ 下劃線 0101 1111 0137 0x5F
96 ’ 開單引號 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 { 開花括號 0111 1011 0173 0x7B
124 丨垂線 0111 1100 0174 0x7C
125 } 閉花括號 0111 1101 0175 0x7D
126 ~ 波浪號 0111 1110 0176 0x7E
127 DEL 刪除 0111 1111 0177 0x7F

2、字符型變量

用char定義的變量為字符型變量。

例如:char op; 定義了一個字符型變量op,其數據類型為char型,即字符型數據。

可以對其進行賦值,例如op='*'就是將字符型常量’*‘賦值給變量op。

字符型變量在計算機中是按照ASCII碼的值來存儲的,可以和整形數據進行運算,其運算規格類似,例如:op = '*'+1;,那么op按字符型數據輸出就是’+’,按整型數據輸出就是43。

3、字符型數據的輸入輸出

(1)scanf()和printf()函數輸入輸出字符

scanf()和printf()函數進行字符型數據的輸入輸出和整型浮點型的處理方式完全一樣,只是格式控制字符串中相應的格式控制說明為%c

(2)字符輸入函數getchar()

getchar()函數可以從鍵盤輸入一個字符。其一般用法為:

char ch;ch = getchar();

這句話就是從鍵盤輸入一個字符,并將其賦給變量ch。

(3)字符輸出函數putchar()

putchar()函數是輸出一個字符。其一般用法為:

putchar(輸出參數);

輸出參數是字符型變量或者字符型常量。

注: 使用getchar()函數和putchar()函數同樣需要先包含頭文件#include <stdio.h>

函數getchar()和putchar()分別只能輸入和輸出一個字符,若要處理多個字符的輸出和輸出,那么一般需要采用循環的方式多次調用該函數。

例如下面的代碼為輸入8個字符,然后將這8個字符再輸出,每兩個字符中間添加一個’-’。

#include <stdio.h>

int main(void)
{
	char ch
	int first = 1, k;	/*first的值表示將要處理的是否為輸入的第一個字符*/
	printf("Enter 8 characters:");
	for (k=1; k<=8; k++) {
		ch = getchar();	/*變量ch接收從鍵盤輸入的一個字符*/
		if (first == 1) {
			putchar(ch);	/*輸出存放在變量ch中的字符*/
			first = 0;		/*處理完第1個字符,清楚標志位*/
		} else {	/*處理第2個及以后的字符*/
			putchar('-'); /*輸出字符常量'-'*/
			putchar(ch);  /*輸出存放在變量ch中的字符*/
		}
	}
}

運行結果:

Enter 8 characters:gorgeous
g-o-r-g-e-o-u-s

例:四則運算

求解簡單的四則運算表達式。輸入一個形如 "操作數?運算符?操作數"的四則運算表達式,輸出運算結果,要求對除數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 == '+'){							/*判斷運算符是否為'+'*/
		printf("=%.2f\n", value1+value2);	/*對操作數做加法操作*/
	} else if (op == '-'){					/*否則判斷運算符是否為'-'*/
		printf("=%.2f\n", value1-value2);
	} else if (op == '*'){					/*否則判斷運算符是否為'*'*/
		printf("=%.2f\n", value1*value2);
	} else if (op == '/'){					/*否則判斷運算符是否為'/'*/
		if (value2 != 0){
			printf("=%.2f\n", value1/value2);
		} else {							/*對除數為0作特殊處理*/
			printf("Divisior can not be 0!\n");
		}
	} else {
		printf ("Unknown operator!\n");		/*運算符輸出錯誤*/
	}

	return 0;
}

運行結果:

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!

注: 此處一定要注意,這里的操作數和運算符之間必須連續輸入,兩者之間不能有空格。

這是因為空格也是一個字符,它會占據運算符的位置,在程序中就會是一個無法識別的運算符。

如上述運行結果第三個。

總結

原文鏈接:https://blog.csdn.net/passxgx/article/details/123793691

欄目分類
最近更新