首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C语言新手小白详细教程(8)ASCll编码和字符串

C语言新手小白详细教程(8)ASCll编码和字符串

作者头像
意疏
发布2024-11-25 15:18:30
发布2024-11-25 15:18:30
8910
举报
文章被收录于专栏:学习学习

开篇说明

本章节我们学习C语言中一个非常重要的概念 字符串。在C语言编程中,字符串是一种非常重要的数据类型。与许多其他编程语言不同,C语言本身并没有直接提供字符串类型,而是通过字符数组来表示字符串。这种表示方法虽然简单,但也带来了一些需要注意的细节和潜在的陷阱。

在C语言中,字符串通常以字符数组的形式存储,并以空字符(\0)作为字符串的结束标志。例如,字符串 “Hello” 在内存中实际上是以 {‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’} 的形式存储的。这种表示方法使得字符串的长度可以动态变化,但也要求程序员在处理字符串时必须小心处理字符串的边界和结束标志。

掌握C语言中的字符串处理技巧,不仅能够帮助我们编写出更高效、更安全的代码,还能让我们更好地理解C语言的底层机制。接下来,我们将深入探讨C语言中字符串的各种操作和注意事项。

ASCll编码

ASCII (American Standard Code for Information Interchange美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符,包括英文字母(大写和小写)、数字、标点符号以及控制字符、如换行符或回车符。

我们来举个例子:以便更好的理解ASCll编码

代码语言:javascript
复制
 #include <stdio.h>  
 int main(){  
     char ch = 'H';  
     printf("ch = %c\n", ch);  
     printf("ch的ASCII码 = %d\n", ch);  
 return 0;  
 }

输出结果是这样子的:

我们可以看到大写H的ASCll码为 72 和下面的编码相对应。读者可以自行一试。

  • 以下为ascll编码表 较长,读者可以拖动目录自行阅读。

十进制

十六进制

字符

描述

0

0x00

NUL

空字符

1

0x01

SOH

标题开始

2

0x02

STX

正文开始

3

0x03

ETX

正文结束

4

0x04

EOT

传输结束

5

0x05

ENQ

询问

6

0x06

ACK

确认

7

0x07

BEL

响铃

8

0x08

BS

退格

9

0x09

HT

水平制表符

10

0x0A

LF

换行

11

0x0B

VT

垂直制表符

12

0x0C

FF

换页

13

0x0D

CR

回车

14

0x0E

SO

移出

15

0x0F

SI

移入

16

0x10

DLE

数据链路转义

17

0x11

DC1

设备控制1

18

0x12

DC2

设备控制2

19

0x13

DC3

设备控制3

20

0x14

DC4

设备控制4

21

0x15

NAK

否定

22

0x16

SYN

同步空闲

23

0x17

ETB

传输块结束

24

0x18

CAN

取消

25

0x19

EM

介质结束

26

0x1A

SUB

替换

27

0x1B

ESC

转义

28

0x1C

FS

文件分隔符

29

0x1D

GS

组分隔符

30

0x1E

RS

记录分隔符

31

0x1F

US

单元分隔符

32

0x20

SP

空格

33

0x21

!

感叹号

34

0x22

"

双引号

35

0x23

#

井号

36

0x24

$

美元符号

37

0x25

%

百分号

38

0x26

&

和号

39

0x27

单引号

40

0x28

(

左括号

41

0x29

)

右括号

42

0x2A

*

星号

43

0x2B

+

加号

44

0x2C

,

逗号

45

0x2D

-

减号

46

0x2E

.

句号

47

0x2F

/

斜杠

48

0x30

0

数字0

49

0x31

1

数字1

50

0x32

2

数字2

51

0x33

3

数字3

52

0x34

4

数字4

53

0x35

5

数字5

54

0x36

6

数字6

55

0x37

7

数字7

56

0x38

8

数字8

57

0x39

9

数字9

58

0x3A

:

冒号

59

0x3B

;

分号

60

0x3C

<

小于号

61

0x3D

=

等于号

62

0x3E

>

大于号

63

0x3F

?

问号

64

0x40

@

艾特符号

65

0x41

A

大写字母A

66

0x42

B

大写字母B

67

0x43

C

大写字母C

68

0x44

D

大写字母D

69

0x45

E

大写字母E

70

0x46

F

大写字母F

71

0x47

G

大写字母G

72

0x48

H

大写字母H

73

0x49

I

大写字母I

74

0x4A

J

大写字母J

75

0x4B

K

大写字母K

76

0x4C

L

大写字母L

77

0x4D

M

大写字母M

78

0x4E

N

大写字母N

79

0x4F

O

大写字母O

80

0x50

P

大写字母P

81

0x51

Q

大写字母Q

82

0x52

R

大写字母R

83

0x53

S

大写字母S

84

0x54

T

大写字母T

85

0x55

U

大写字母U

86

0x56

V

大写字母V

87

0x57

W

大写字母W

88

0x58

X

大写字母X

89

0x59

Y

大写字母Y

90

0x5A

Z

大写字母Z

91

0x5B

[

左方括号

92

0x5C

|反斜杠

93

0x5D

]

右方括号

94

0x5E

^

脱字符

95

0x5F

_

下划线

96

0x60

`

反引号

97

0x61

a

小写字母a

98

0x62

b

小写字母b

99

0x63

c

小写字母c

100

0x64

d

小写字母d

101

0x65

e

小写字母e

102

0x66

f

小写字母f

103

0x67

g

小写字母g

104

0x68

h

小写字母h

105

0x69

i

小写字母i

106

0x6A

j

小写字母j

107

0x6B

k

小写字母k

108

0x6C

l

小写字母l

109

0x6D

m

小写字母m

110

0x6E

n

小写字母n

111

0x6F

o

小写字母o

112

0x70

p

小写字母p

113

0x71

q

小写字母q

114

0x72

r

小写字母r

115

0x73

s

小写字母s

116

0x74

t

小写字母t

117

0x75

u

小写字母u

118

0x76

v

小写字母v

119

0x77

w

小写字母w

120

0x78

x

小写字母x

121

0x79

y

小写字母y

122

0x7A

z

小写字母z

123

0x7B

{

左花括号

124

0x7C

125

0x7D

}

右花括号

126

0x7E

~

波浪号

127

0x7F

DEL

删除


字符串

字符串是一个或多个的序列,例如:

" i am happy ! "

  1. 字符串的定义: 字符串:C语言并没有专门存储字符串的变量类型,字符串都被存储在char类型的数组中,数组由连续的存储单元组成,字符串中的字符都被存储在相邻的存储单元中,每个单元存储一个字符。 问题来了,我们该如果区分字符数组和字符串呢? C语言中字符串一定以’\0’(空字符)结束。这意味着数组的容量必须至少比待存储字符串中的字符数多1. 注: '0’是控制字符,非打印字符,只是做标记,在实际打印时不会被显示的打印。
  2. 字符数组和字符串的输入输出 1、字符数组的输入输出,用格式符号"%c"逐个输入。 例如:
代码语言:javascript
复制
#include <stdio.h>

int main(){

    int i;

    char ch[5];

    printf("请输入字符: \n");

    for (i = 0; i < 5; i++)

    {

        scanf("%c", &ch[i]);//ch[i] 是一个char型变量,用来接收输入的字符,&ch[i]表示ch[i]的地址,即ch[i]的指针。(取地址)

    }

    printf("您输入的字符是: \n");

    for ( i = 0; i < 5; i++)

    {

        printf("%c", ch[i]);//输出ch数组中的字符

    }

    printf("\n");

return 0;
}

结果为:

2、字符串的输入输出、将整个字符串一次输入或输出,用"%s"格式符。 例如:

代码语言:javascript
复制
#include <stdio.h>

int main(){

    char ch[6];//定义一个字符数组,因为要输入'\0',所以长度要比字符串大 1

    scanf("%s",ch);//数组名前不加&,表示是地址,而不是指针

    printf("%s\n",ch);

return 0;
}

结果为:

什么是以’0’结尾呢? 再举个例子:我们来先定义一个字符串数组

char name[40];

这里我们定义了一个大小为40,类型是char的数组。然后键盘录入一个姓氏,以字符串的形式存储在name中,最后打印。

  • 代码如下:
代码语言:javascript
复制
#include <stdio.h>

int main(){

    char name[40];

    printf("请输入你的名字: ");

    scanf("%s", name);//字符串转换说明%s 
    //数组名前不加&,C语言中数组名代表数组第一个元素的地址

    printf("我的名字是 %s!\n", name);

return 0;
}

运行结果:

这里当程序看到%s时,就知道你输入的是一个字符串,同样会自动在结尾加上’0’. 当计算机读取到第一个空字符’0’就知道在此之前是一个完整的字符串,并将其输出。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开篇说明
    • ASCll编码
    • 字符串
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档