首页 > 其他分享 >C语言字符

C语言字符

时间:2022-11-22 22:37:41浏览次数:52  
标签:返回 字符 ch int C语言 大写字母 小写字母


文章目录

  • ​​一、ASCII码表​​
  • ​​1、ASCII 控制字符 (字符编码: 0-31)​​
  • ​​2、ASCII 可打印字符 (字符编码: 32-127)​​
  • ​​3、转义字符​​
  • ​​二、字符就是整数​​
  • ​​三、常用的库函数​​
  • ​​四、课后作业​​
  • ​​五、获取视频教程​​
  • ​​六、版权声明​​

在实际开发中,程序员很少用单个字符来表示数据,字符的意义主要作为数组的时候可以形成一个字符串。在本章节中,我们重点介绍字符与整数之间的关系和ASCII码的相关知识。

字符类型char,只能用单引号’ ‘来包围,不是用双引号" “包围。而字符串只能用双引号”
"包围,不能用单引号’ '包围。

输出字符使用 %c,输出字符串使用 %s。

一、ASCII码表

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码方案,它主要用于显示现代英语和其他西欧语言,它是现今最通用的单字节编码方案,等同于国际标准ISO/IEC646。

ASCII码规范于1967年第一次发布,最后一次更新是在1986年,它包含了33个控制字符(具有特殊含义无法显示的字符)和95个可显示字符。

1、ASCII 控制字符 (字符编码: 0-31)

在ASCII码表中,前32个字符是不能用于打印的编码,而是用于控制像打印机一样的外围设备。

十进制

符号

中文解释

十进制

符号

中文解释

0

NULL

空字符

16

DLE

数据链路转义

1

SOH

标题开始

17

DC1

设备控制 1

2

STX

正文开始

18

DC2

设备控制 2

3

ETX

正文结束

19

DC3

设备控制 3

4

EOT

传输结束

20

DC4

设备控制 4

5

ENQ

询问

21

NAK

拒绝接收

6

ACK

收到通知

22

SYN

同步空闲

7

BEL


23

ETB

传输块结束

8

BS

退格

24

CAN

取消

9

HT

水平制表符

25

EM

介质中断

10

LF

换行键

26

SUB

替换

11

VT

垂直制表符

27

ESC

换码符

12

FF

换页键

28

FS

文件分隔符

13

CR

回车键

29

GS

组分隔符

14

SO

移出

30

RS

记录分离符

15

SI

移入

31

US

单元分隔符

2、ASCII 可打印字符 (字符编码: 32-127)

可打印字符共95个。

1)32是空格。

2)48~57为0到9十个阿拉伯数字;

3)65~90为26个大写英文字母;

4)97~122号为26个小写英文字母;

5)其余为一些标点符号、运算符号等;

6)第127个字符表示的是键盘上的删除命令。

十进制

符号

中文解释

十进制

符号

中文解释

32

空格

80

P

大写字母 P

33

!

感叹号

81

Q

大写字母 Q

34

"

双引号

82

R

大写字母 R

35

#

井号

83

S

大写字母 S

36

$

美元符

84

T

大写字母 T

37

%

百分号

85

U

大写字母 U

38

&


86

V

大写字母 V

39


单引号

87

W

大写字母 W

40

(

左括号

88

X

大写字母 X

41

)

右括号

89

Y

大写字母 Y

42

*

星号

90

Z

大写字母 Z

43

+

加号

91

[

左中括号

44

,

逗号

92

\

反斜杠

45

-

连字号或减号

93

]

右中括号

46

.

句点或小数点

94

^

音调符号

47

/

斜杠

95

_

下划线

48

0

0

96

`

重音符

49

1

1

97

a

小写字母 a

50

2

2

98

b

小写字母 b

51

3

3

99

c

小写字母 c

52

4

4

100

d

小写字母 d

53

5

5

101

e

小写字母 e

54

6

6

102

f

小写字母 f

55

7

7

103

g

小写字母 g

56

8

8

104

h

小写字母 h

57

9

9

105

i

小写字母 i

58

:

冒号

106

j

小写字母 j

59

;

分号

107

k

小写字母 k

60

<

小于

108

l

小写字母 l

61

=

等号

109

m

小写字母 m

62

>

大于

110

n

小写字母 n

63

?

问号

111

o

小写字母 o

64

@

电子邮件符号

112

p

小写字母 p

65

A

大写字母 A

113

q

小写字母 q

66

B

大写字母 B

114

r

小写字母 r

67

C

大写字母 C

115

s

小写字母 s

68

D

大写字母 D

116

t

小写字母 t

69

E

大写字母 E

117

u

小写字母 u

70

F

大写字母 F

118

v

小写字母 v

71

G

大写字母 G

119

w

小写字母 w

72

H

大写字母 H

120

x

小写字母 x

73

I

大写字母 I

121

y

小写字母 y

74

J

大写字母 J

122

z

小写字母 z

75

K

大写字母 K

123

{

左大括号

76

L

大写字母 L

124

|

垂直线

77

M

大写字母 M

125

}

右大括号

78

N

大写字母 N

126

~

波浪号

79

O

大写字母 O

127

删除

3、转义字符

对于 ASCII编码,0~31(十进制)范围内的字符为控制字符,它们都是看不见的,不能在显示器上显示,也无法从键盘输入,C语言又定义了一种简单的书写方式,即转义字符的形式来表示。

转义字符完整的列表如下:

转义字符

意义

ASCII码值

使用频率

\n

换行(LF) ,将当前位置移到下一行开头。

10

每天都用

\’

单引号。

39

常用

\"

双引号。

34

常用

\\

反斜杠。

92

常用

\r

回车(CR)

13

windows平台常用,linux平台不常用。

\t

水平制表(HT) 。

9

20年前常用,现在不用。

\v

垂直制表(VT)。

11

20年前常用,现在不用。

\a

响铃(BEL)。

7

20年前常用,现在不用。

\b

退格(BS) ,将当前位置移到前一列。

8

20年前常用,现在不用。

\f

换页(FF),将当前位置移到下页开头。

12

20年前常用,现在不用。

\n是最常用的转义字符,表示换行,让文本从下一行的开头输出,前面的章节中已经多次使用。

\r\n用于windows平台DOS格式文件的换行。

单引号、双引号、反斜杠是特殊的字符,不能直接表示。

单引号是字符类型的开头和结尾,要使用\'表示。

双引号是字符串的开头和结尾,要使用\"表示。

反斜杠是转义字符的开头,要使用[\\表示](file:///\表示)。

示例(book67.c)

/*
* 程序名:book67.c,此程序演示C语言的转义字符。
* 作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
printf("输出'单引号\'的方法。\n");
printf("输出双引号\"的方法。\n");
printf("输出反斜杠\\的方法。\n");
printf("单引号'不转义也能输出。\n");

return 0;
}

运行效果

C语言字符_c语言

二、字符就是整数

字符和整数没有本质的区别。可以给 char变量一个字符,也可以给它一个整数;反过来,可以给 int变量一个整数,也可以给它一个字符。

char 变量在内存中存储的是字符对应的 ASCII 码值。如果以 %c 输出,会根据 ASCII码表转换成对应的字符,如果以 %d 输出,那么还是整数。

int 变量在内存中存储的是整数本身,如果以 %c 输出时,也会根据 ASCII码表转换成对应的字符。

也就是说,ASCII 码表将整数和字符关联起来了。

char类型占内存一个字节,signed char取值范围是-128-127,unsigned char取值范围是0-255。

如果整数大于255,那么整数还是字符吗?

描述再准确一些,在char的取值范围内(0-255),字符和整数没有本质区别。

字符肯定是整数,0-255范围内的整数是字符,大于255的整数不是字符。

示例(book68.c)

/*
* 程序名:book68.c,此程序演示字符与整数的关系
* 作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
char a = 'E';
char b = 70;
int c = 71;
int d = 'H';

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

运行效果

C语言字符_ascii码_02

在ASCII码表中,E、F、G、H 的值分别是 69、70、71、72。

三、常用的库函数

以下是常用的字符函数,必须掌握。

int isalpha(int ch);  // 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0。
int isalnum(int ch); // 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0。
int isdigit(int ch); // 若ch是数字('0'-'9')返回非0值,否则返回0。
int islower(int ch); // 若ch是小写字母('a'-'z')返回非0值,否则返回0。
int isupper(int ch); // 若ch是大写字母('A'-'Z')返回非0值,否则返回0。
int tolower(int ch); // 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')。
int toupper(int ch); // 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')

以下是不常用的字符函数,极少使用,了解即可。

int isascii(int ch);  // 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0。
int iscntrl(int ch); // 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F),返回非0值,否则返回0。
int isprint(int ch); // 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0。
int ispunct(int ch); // 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0。
int isspace(int ch); // 若ch是空格(' '),水平制表符('/t'),回车符('/r'),走纸换行('/f'),垂直制表符('/v'),换行符('/n'),返回非0值,否则返回0。
int isxdigit(int ch); // 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值,否则返回0。

四、课后作业

1)研究ascii码表,重点关心几个问题:

(1)字符是整数,整数可以进行加减运算,字符可以吗?

(2)字母’A’-‘Z’、‘a’-‘z’和数字’0’-'9’的ascii码值是不是连续的?

(3)字母’A’和’a’、'Z’和’z’的ascii码值的差是多少?

2)根据上面的研究结果,编写函数,实现字符操作常用的库函数的功能,函数的声明如下:

int ISALPHA(int ch);   // 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0。
int ISALNUM(int ch); // 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0。
int ISDIGIT(int ch); // 若ch是数字('0'-'9')返回非0值,否则返回0。
int ISLOWER(int ch); // 若ch是小写字母('a'-'z')返回非0值,否则返回0。
int ISUPPER(int ch); // 若ch是大写字母('A'-'Z')返回非0值,否则返回0。
int TOLOWER(int ch); // 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')。
int TOUPPER(int ch); // 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')

3)自定义一个函数,函数名是ctoi,利用ASCII码进行加减运算,把字符的’0’、‘1’、‘2’、‘3’、‘4’、‘5’、‘6’、‘7’、‘8’、'9’转换为整数的0、1、2、3、4、5、6、7、8、9。不允许用if和switch语句,只能用ASCII码运算,函数的声明如下:

int ctoi(const char chr);  // chr为用字符方式表示的数字,函数的返回值为数字的整数。

调用示例:

printf("'0' is %d\n",ctoi('0'));    // 输出结果是'0' is 0
printf("'9' is %d\n",ctoi('9')); // 输出结果是'9' is 9

4)编写示例程序,测试char和unsigned char赋值超过取值范围的后果。

5)%不是转义字符,要输出%怎么办?

五、获取视频教程

六、版权声明

作者:码农有道

如果文章有错别字,或者内容有错误,或其他的建议和意见,请您留言指正,非常感谢!!!


标签:返回,字符,ch,int,C语言,大写字母,小写字母
From: https://blog.51cto.com/u_13748800/5878563

相关文章

  • C语言浮点数
    文章目录​​一、浮点数的概念​​​​二、占用内存的情况​​​​三、浮点数的精度​​​​1、测试float类型​​​​2、测试double类型​​​​3、测试longdouble类型​......
  • C语言文件操作
    文章目录​​一、文本数据和二进制​​​​1、文本数据​​​​2、二进制数据​​​​3、文本文件和二进制文件​​​​二、打开文件​​​​1、文件指针​​​​2、打开文......
  • C语言目录操作
    文章目录​​一、获取当前工作目录​​​​二、切换工作目录​​​​三、目录的创建和删除​​​​四、获取目录中的文件列表​​​​1、包含头文件​​​​2、相关的库函数......
  • C语言目录和文件操作扩展
    文章目录​​一、access库函数​​​​二、stat库函数​​​​1、stat结构体​​​​2、stat库函数​​​​三、utime库函数​​​​四、rename库函数​​​​五、remove库......
  • C语言时间操作
    文章目录​​一、time_t别名​​​​二、time库函数​​​​三、tm结构体​​​​四、localtime库函数​​​​五、mktime库函数​​​​在这里插入图片描述六、程序睡眠​......
  • C语言获取系统错误
    文章目录​​一、strerror函数​​​​二、errno的细节​​​​1、调用库函数失败不一定会设置errno​​​​2、errno不能作为调用库函数失败的标志​​​​3、程序员可以不......
  • C语言编译预处理
    文章目录​​一、预处理指令​​​​二、包含文件​​​​三、宏定义指令​​​​1、无参数的宏​​​​2、带参数的宏​​​​四、条件编译​​​​1、#ifdef​​​​2、#i......
  • C语言gdb调试
    文章目录​​一、gdb的安装​​​​二、调试前的准备​​​​三、基本调试命令​​​​四、课后作业​​​​五、获取视频教程​​​​六、版权声明​​程序员写在编写程序......
  • C语言makefile文件
    文章目录​​一、makefile的编写​​​​二、make命令​​​​三、makefile文件中的变量​​​​四、应用经验​​​​五、课后作业​​​​六、获取视频教程​​​​七、版......
  • C语言数据类型
    文章目录​​一、基本类型​​​​1、字符型(char)​​​​2、整型(int)​​​​3、浮点型(float)​​​​二、字符串​​​​三、构造类型​​​​四、指针类型​​​​五、其它......