C语言中的字符型数据与ASCII码表

 更新时间:2023年1月30日 08:20  点击:1235 作者:passxgx

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(空操作)00x00@640x40
SOH(标题开始)10x01A650x41
STX(正文开始)20x02B660x42
ETX(正文结束)30x03C670x43
EOT(传输结束)40x04D680x44
ENQ(请求)50x05E690x45
ACK(收到通知)60x06F700x46
BEL(响铃)70x07G710x47
BS(退格)80x08H720x48
HT(水平制表符)90x09I730x49
LF(换行)100x0AJ740x4A
VT(垂直制表符)110x0BK750x4B
FF(换页)120x0CL760x4C
CR(回车)130x0DM770x4D
SO(不用切换)140x0EN780x4E
SI(启用切换)150x0FO790x4F
DLE(数据链路转义)160x10P800x50
DC1(设备控制1)170x11Q810x51
DC2(设备控制2)180x12R820x52
DC3(设备控制3)190x13S830x53
DC4(设备控制4)200x14T840x54
NAK(拒绝接收)210x15U850x55
SYN(同步空闲)220x16V860x56
ETB(结束传输块)230x17W870x57
CAN(取消)240x18X880x58
EM(媒介结束)250x19Y890x59
SUB(代替)260x1AZ900x5A
ESC(换码(溢出))270x1B[910x5B
FS(文件分隔符)280x1C\920x5C
GS(分组符)290x1D]930x5D
RS(记录分隔符)300x1E^940x5E
US(单元分隔符)310x1F_950x5F
(space)(空格)320x20`960x60
!330x21a970x61
"340x22b980x62
#350x23c990x63
$360x24d1000x64
%370x25e1010x65
&380x26f1020x66
390x27g1030x67
(400x28h1040x68
)410x29i1050x69
*420x2Aj1060x6A
+430x2Bk1070x6B
,440x2Cl1080x6C
-450x2Dm1090x6D
.460x2En1100x6E
/470x2Fo1110x6F
0480x30p1120x70
1490x31q1130x71
2500x32r1140x72
3510x33s1150x73
4520x32t1160x74
5530x35u1170x75
6540x36v1180x76
7550x37w1190x77
8560x38x1200x78
9570x39y1210x79
:580x3Az1220x7A
;590x3B{1230x7B
<600x3C|1240x7C
=610x3D}1250x7D
>620x3E~1260x7E
?630x3FDEL(删除)1270x7F

在C语言中,所使用的字符被一一映射到一张表中,这张表被称为ASCII码表。

由于标准 ASCII 字符集字符数目有限,无法满足要求。为此,国际标准化组织又制定了 ISO2022 标准,它规定了在保持与 ISO646 兼容的前提下将 ASCII 字符集扩充为 8 位代码的统一方法。 ISO 1陆续制定了一批适用于不同地区的扩充 ASCII 字符集,每种扩充 ASCII 字符集分别可以扩充 128 个字符,这些扩充字符的编码均为高位为 1 的 8 位代码,称为扩展 ASCII 码。

但由于扩展ASCII不再是国际标准,故不在此展示。

十进制码值Dec缩写/字符二进制码值Bin八进制码值Oct十六进制码值Hex
0NULL 空字符0000 0000000x0
1SOH 标题开始0000 0001010x1
2STX 正文开始0000 0010020x2
3ETX 正文介绍0000 0011030x3
4EOT 传输结束0000 0100040x4
5ENQ 请求0000 0101050x5
6ACK 收到通知0000 0110060x6
7BEL 响铃0000 0111070x7
8BS 退格0000 10000100x8
9HT 水平制表符0000 10010110x9
10LF 换行键0000 10100120xA
11VT 垂直制表符0000 10110130xB
12FF 换页键0000 11000140xC
13CR 回车键0000 11010150xD
14SO 不用切换0000 11100160xE
15SI 启用切换0000 11110170xF
16DLE 数据链路转义0001 00000200x10
17DC1 设备控制10001 00010210x11
18DC2 设备控制20001 00100220x12
19DC3 设备控制30001 00110230x13
20DC4 设备控制40001 01000240x14
21NAK 拒绝接受0001 01010250x15
22SYN 同步空闲0001 01100260x16
23ETB 结束传输块0001 01110270x17
24CAN 取消0001 10000300x18
25EM 媒介结束0001 10010310x19
26SUB 代替0001 10100320x1A
27ESC 换码(溢出)0001 10110330x1B
28FS 文件分隔符0001 11000340x1C
29GS 分组符0001 11010350x1D
30RS 记录分隔符0001 11100360x1E
31US 单元分隔符0001 11110370x1F
32(space) 空格0010 00000400x20
33! 叹号0010 00010410x21
34" 双引号0010 00100420x22
35# 井号0010 00110430x23
36$ 美元符0010 01000440x24
37% 百分号0010 01010450x25
38& 和号0010 01100460x26
39’ 闭单引号0010 01110470x27
40( 开括号0010 10000500x28
41) 闭括号0010 10010510x29
42* 星号0010 10100520x2A
43+ 加号0010 10110530x2B
44, 逗号0010 11000540x2C
45- 减号/破折号0010 11010550x2D
46. 句号0010 11100560x2E
47/ 斜杠0010 11110570x2F
48数字00011 00000600x30
49数字10011 00010610x31
50数字20011 00100620x32
51数字30011 00110630x33
52数字40011 01000640x34
53数字50011 01010650x35
54数字60011 01100660x36
55数字70011 01110670x37
56数字80011 10000700x38
57数字90011 10010710x39
58: 冒号0011 10100720x3A
59; 分号0011 10110730x3B
60< 小于0011 11000740x3C
61= 等于0011 11010750x3D
62> 大于0011 11100760x3E
63? 问号0011 11110770x3F
64@ 电子邮件符号0100 000001000x40
65大写字母A0100 000101010x41
66大写字母B0100 001001020x42
67大写字母C0100 001101030x43
68大写字母D0100 010001040x44
69大写字母E0100 010101050x45
70大写字母F0100 011001060x46
71大写字母G0100 011101070x47
72大写字母H0100 100001100x48
73大写字母I0100 100101110x49
74大写字母J0100 101001120x4A
75大写字母K0100 101101130x4B
76大写字母L0100 110001140x4C
77大写字母M0100 110101150x4D
78大写字母N0100 111001160x4E
79大写字母O0100 111101170x4F
80大写字母P0101 000001200x50
81大写字母Q0101 000101210x51
82大写字母R0101 001001220x52
83大写字母S0101 001101230x53
84大写字母T0101 010001240x54
85大写字母U0101 010101250x55
86大写字母V0101 011001260x56
87大写字母W0101 011101270x57
88大写字母X0101 100001300x58
89大写字母Y0101 100101310x59
90大写字母Z0101 101001320x5A
91[ 开方括号0101 101101330x5B
92\ 反斜杠0101 110001340x5C
93] 闭方括号0101 110101350x5D
94^ 脱字节0101 111001360x5E
95_ 下划线0101 111101370x5F
96’ 开单引号0110 000001400x60
97小写字母a0110 000101410x61
98小写字母b0110 001001420x62
99小写字母c0110 001101430x63
100小写字母d0110 010001440x64
101小写字母e0110 010101450x65
102小写字母f0110 011001460x66
103小写字母g0110 011101470x67
104小写字母h0110 100001500x68
105小写字母i0110 100101510x69
106小写字母j0110 101001520x6A
107小写字母k0110 101101530x6B
108小写字母l0110 110001540x6C
109小写字母m0110 110101550x6D
110小写字母n0110 111001560x6E
111小写字母o0110 111101570x6F
112小写字母p0111 000001600x70
113小写字母q0111 000101610x71
114小写字母r0111 001001620x72
115小写字母s0111 001101630x73
116小写字母t0111 010001640x74
117小写字母u0111 010101650x75
118小写字母v0111 011001660x76
119小写字母w0111 011101670x77
120小写字母x0111 100001700x78
121小写字母y0111 100101710x79
122小写字母z0111 101001720x7A
123{ 开花括号0111 101101730x7B
124丨垂线0111 110001740x7C
125} 闭花括号0111 110101750x7D
126~ 波浪号0111 111001760x7E
127DEL 删除0111 111101770x7F

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

[!--infotagslink--]

相关文章