转义字符(Escape character)


前言

一、转义字符的概念
二、转义字符表
三、转义字符作用
四、详解转义字符
1、\0:空字符
2、\n:换行符
3、\r:回车符
4、\t:水平制表符
5、\v:垂直制表符
6、\a:响铃
7、\f:换页符
8、\b:退格符
9、\:反斜杠
10、?:问号
11、':单引号
12、 ":双引号
五、试题演练

一、转义字符的概念

1、转义字符是很多程序语言、数据格式和通信协议的形式文法的一部分。对于一个给定的字母表,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义。因此转义字符开头的字符序列被叫做转义序列。
2、转义序列通常有两种功能。第一个是编码一个句法上的实体,如设备命令或者无法被字母表直接表示的特殊数据。第二种功能,也叫字符引用,用于表示无法在当前上下文中被键盘录入的字符(如字符串中的回车符),或者在当前上下文中会有不期望的含义的字符(如C语言字符串中的双引号字符",不能直接出现,必须用转义序列表示)。在后面那种情况,转义序列是一种由转义字符自身和一个被引用的字符组成的一个二合字母(digraph)情形。
3、简而言之,转义字符就是以‘\’为开头的字符,后面跟一个或几个字符,其意思是将反斜杠‘\’后面的字符转变成为另外的意义。

二、转义字符表

在这里插入图片描述
注意:

1、斜杠:“/” 与 反斜杠:“” ,此处不可互换
2、\xhh 十六进制转义不限制字符个数 ‘\x000000000000F’ == '\xF

三、转义字符作用

1、表示特殊字符:某些字符在字符串中具有特殊的含义,例如双引号(")或反斜杠()本身。通过使用转义字符,可以在字符串中表示这些特殊字符,而不会与编程语言的语法冲突。
2、表示不可见字符:某个字符在文本中是不常见的,如换行符(\n),制表符(\t),回车符(\r)。通过使用转义字符,可以在字符串中表示这些不常见字符,从而实现特定的文本格式或布局。
3、表示特殊操作:转义字符还可以用于表示特定的操作,如在正则表达式中使用转义字符表示特殊的匹配模式,或在命令行中使用转义字符执行特点的命令或操作。

四、详解转义字符

1、\0:空字符

空字符即NUL字节,ASCII值为0,在程序代码中通常以转义序列’\0’表示,在C语言中,空字符非常重要,主要体现在字符串中,是字符串结束的标志。

1printf("hello world!\n");

输出结果为:

1、hello world!
2

系统自动在最后一个字符’\n’的后面加上一个’\0’,作为字符串结束的标志。而在执行printf函数时,每输出一个字符检查一次当前字符是否为’\0’,如果是’\0’就会停止输出。

2、\n:换行符

回车换行。将当前位置移到下一行的开头,ASCII值为10。

1printf("hello world!\n");

输入结果为:

1、hello world!
2

系统在输出"hello world!"之后,遇到‘\n’会自动进行换行;

3、\r:回车符

将光标移动到这一行的开头。注意只是移动,没有删除任何东西,如果移动之后再添加新的内容会自动覆盖后面的内容,ASCII值为13。

1printf("hello world!\r");

输出结果为:

1、hello world!

此时的光标在在开头的位置,如果’\r’后面还有内容,则会被覆盖掉;

1printf("hello world!\rworld");

'\r’后面还有"world",因为光标在开头,所以此时的"hello"会被覆盖掉,所以此时的输出为:

1、world world!

4、\t:水平制表符

空格的集合体,一般情况下,一个tab键相当于8个空格,ASCII值为9。

1printf("hello world! \t hello world!");

输出结果为:

1、hello world!     hello world!

5、\v:垂直制表符

让‘\v’后面的字符从下一行开始输出,且开始的列数为“\v”前一个字符所在列后面一列,ASCII值为11。

1printf("hello world! \v hello world!\n");

输出结果为:

1、hello world! 
2、              hello world!

6、\a:响铃

响铃,ASCII值为7。

7、\f:换页符

先清空再进行输出,和\v很相似ASCII为12。

1printf("hello world! \f hello world!");

输出结果为:

1、hello world! 
2、              hello world!

8、\b:退格符

删除上一个字符,ASCII为8。

1printf("hello world!\b k");

输出结果为:

1、hello world k

9、\:反斜杠

输出反斜杠,ASCII为92。

1printf("\\");

输出结果为:

1、\

10、?:问号

输出问号,ASCII码值为63。

1printf("\?");

输出结果为:

1、?

11、':单引号

输出单引号,ASCII为39。

1printf("\'");

输出结果为:

1、'

12、 ":双引号

输出双引号,ASCII为34。

1printf("\"");

输出结果为:

1、"

五、试题演练

1、在这里插入图片描述

解析:
字符共有6个,其中‘\b’为退格符,‘‘’为单引号字符,’\'为\字符,‘\n’为回车换行符
所以输出结果为:re’hi’you
2、

解析:
A:均合法
B:‘\1011’的\后面多余3位八进制是非法的,‘\’是非法的,‘\ab’的\后面少了x是非法的
C:‘\是非法的
D:‘\abc’是非法的,‘xlf’的前面缺少
3、
在这里插入图片描述
解析:
‘\0X41’、‘\0x41’、‘\x41’、‘\c’均错误
所以错误为4个

总结

今天的分享就到这里了,希望和大家一起进步,加油!
在这里插入图片描述

  • 36
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北尘_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值