整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

C语言中转义字符那些事儿

C语言中转义字符那些事儿

习C语言的小伙伴都知道——转义字符。不错,今天就和大家讲解一下这个转义字符。转义字符的作用主要用来表示那些用一般字符不便于表示的控制代码,然后不得不说一下转义字符的概念:是C语言中表示字符的一种特殊形式,一般以反斜'\'开头,后面跟一个字符或一个八进制或十六进制数表示。转义字符具有特定的含义,不同于字符原有的意义,故称转义字符。在C语言中,构成字符常量的控制字符必须用转义字符表示。转义字符的表现形式是一种以“\”开头的字符。例如退格符用'\b'表示,换行符用'\n'表示。转义字符中的'\'表示它后面的字符已失去它原来的含义,转变成另外的特定含义。反斜杠与其后面的字符一起构成一个特定的字符。下面为大家整理一些常用的转义字符及其含义,方便初学的小伙伴学习理解:




从上图中可以看出,在C语言中有三种转义字符,它们是:十六进制转义字符·、一般转义字符和八进制转义字符。

十六进制转义字符

它是由反斜杠'/'和字母x(或X)及随后的1~2个十六进制数字构成的字符序列。例如,'\x30'、'\x41'、'\X61'分别表示字符'0'、'A'和'a'。因为字符'0'、'A'和'a'的ASCII码的十六进制值分别为0x30、0x41和0x61。可见,字符集中的所有字符都可以用十六进制转义字符表示。

一般转义字符

这种转义字符,虽然在形式上由两个字符组成,但只代表一个字符。常用的一般转义字符为:

\a \n \t \v \b \r \f \ \’ \"

细心的读者可能已经发现,转义字符'\/'代表的反斜杠"/"、转义字符’\’’代表的字符"'"和转义字符'\"'代表的字符""",其本身就是可显示字符,为什么还要对它转义呢?这是因为它们的原有的字符形式已作它用,其中单引号用作区分字符常量的括号,双引号用作区分字符串(下面将要介绍字符串)的括号,而反斜杠本身已用来表示转义字符的开头,因此必须对它们用转义字符重新声明。

八进制转义字符

它是由反斜杠'/'和随后的1~3个八进制数字构成的字符序列。例如,''、'1'、'1'分别表示字符'0'、'A'和'a'。因为字符'0'、'A'和'a'的ASCII码的八进制值分别为60、101和141。字符集中的所有字符都可以用八进制转义字符表示。如果你愿意,可以在八进制数字前面加上一个0来表示八进制转移字符。

学习转义字符必须要注意一些问题:第一,在C程序中,使用不可打印字符时,通常用转义字符表示:第二, \v 垂直制表和\f 换页符对屏幕没有任何影响,但会影响打印机执行响应操作:最后, 转义字符中只能使用小写字母,每个转义字符只能看作一个字符。

学习C语言一定要注重基础知识的学习和细节方面的问题,但是好多初学的小伙伴在学习这些内容时不重视, 总是急于编程序。但是如果基础知识学习不扎实,编程时就会错误百出。所以在C语言入门的时候还是应该重视概念的学习。当然也不要花费太多时间, 大致弄清这些基础知识,以后就可以开始简单地编程了,在程序出现一些细节方面的问题时,再回过头去检查自己基础知识的遗漏点,这样既可以巩固基础知识,又可以编写出高质量的程序。 可以达到事半功倍的效果。希望喜欢学习C语言的小伙伴可以早日成为大神~

转义字符换行,n表示newline

print('hello\nworld')

hello

world


#转义字符t表示水平制表位tab

print('hello\tworld')

hello world


#转义字符r表示回车,光标回到首位

print('hello\rworld')

world


#转义字符b表示退一格

print('hello\bworld')

hellworld


#转义斜线

print('http:\\www.baidu.com')

http:\www.baidu.com


#转义说话内容

print('领导说:\'新来的\'')

领导说:'新来的'


#如果不希望转义字符起作用,就是用原字符,就是在字符串之前加上r或者R

print(r'hello\nworld')

hello\nworld

录:字符转义,编码解码,格式化补充,format扩展,进制转化,深浅拷贝


转义:字符前存在\,在特定情况下字符就不再表示本身的意思


代码 功能 例子

\n 换行符 print('hello\nworld')

\t 水平制表符 print('\thello\tworld')

\b 退格,往前删除一格 print('hell \bo')

\r 当前位置移到本行开头,\r之前的数据被后面的覆盖,不是删除 print(' he\rllo')

\ 一个单斜杠 print(' \')

\' 一个单引号 print('\'')

\" 一个双引号 print('\"')

>\0 一个空格(仅用于交互式环境下,也就是命令窗口中) print('her\0sdf')< 一个空格(仅用于交互式环境下,也就是命令窗口中) print('her>\0 一个空格(仅用于交互式环境下,也就是命令窗口中) print('her\0sdf')<>

\a 电脑提示音(仅用于交互式环境下) print('\a')



在字符串前加r,就可以防止转义

print('\t00b')
print(r'\t00b')

00b

\t00b



编码(encode)和解码(decode)

a='你好 python'
b=a.encode('utf-8')
print(b)
print(b.decode('utf-8'))

b'\xe4\xbd\xa0\xe5\xa5\xbd python' ---- 只编码中文字符串,英文字符串不变

你好 python --- 解码要先新设变量存储编码后的数据,解码是在新变量的基础上解


格式化补充

代码 功能 例子

%s 占位符 print('%s' % '帅')

%r 显示原数据类型 print('%r' % '帅')

%d 整数 print('%d' % 数字)

%f 浮点数 print('%f' % 数字)

%c 查找ASCII表(就是一个特殊的表)里对应数字的元素 print('%c' % 数字)

%o 将数字转为8进制(逢8进1) print('%o' % 数字)

%x 16进制 (逢16进1) print('%x' % 数字)

%e 科学计数法 print('%e' % 数字)

- 左对齐,用法:%-6指定长度.4指定小数点后面的位数 print('%-6.4f' % 10.3)

+ 显示正号 print('%+6.4f' % 10.3)

%数字s 设置格式化长度 print('%5s' % 'ab')


1.%s 占位符

print('%s年%s月%s日' % (2021,4,28))

2021年4月28日


2.%r 显示原数据类型

print('%r' % ('2021,4,28'))

'2021,4,28' --- 原本的引号都一并输出,和原数据一模一样


3.%d 整数

print('%d' % 1.8)   #相当于向下取整

1


4.%f 浮点数

print('%f' % 1.4)  #自动保留六位小数

1.400000


5.%c 查找ASCII表(就是一个特殊的表)里对应数字的元素

print('%c' % 65)
print('%c' % 100)

A

d


6.%o 8进制(逢8进1)

print('%o' % 65)

101


7.%x 16进制

print('%x' % 65)

41


8.%e 科学计数法

print('%e' % 65)  #65=6.5 *10的一次方,结果中的01=10的1次方

6.500000e+01


9.%-6指定长度 .4指定小数点后面的位数

print('%-6.4f' % 10.3)  #4规定小数点后面有几位,f代表浮点数,6为指定长度;优先满足小数点后几位数

10.3000


10.%+ 显示正号

print('%+6.4f' % 10.3) 

+10.3000


11.%数字s 设置格式化长度

print('%5s' % 'ab')

ab --- ab前面空了三格



format扩展

功能 例子

保留小数点后两位数 print('{:.2f}'.format(10.3333333333))

指定传入,保留小数点后两位数 print('{s:.2f}'.format(s=10.33333333333))

百分比格式化 print('{:.2%}'.format(0.33))

转16进制 print('{:x}'.format(20))

转8进制 print('{:o}'.format(20))

左对齐,长度为10 print('{a:<10}'.format(a=10.333, b=21.21))

传入数据长度不足,用x填充 print('{a:x<10}'.format(a=12.1, b=23))

右对齐 print('{a:x>10}'.format(a=12.1, b=23))

两端对齐 print('{a:x^10}'.format(a=12.1, b=23))


1.保留小数点后两位数

print('{:.2f}'.format(10.3333333333))

10.33


2.指定传入,保留小数点后两位数

print('{s:.2f}'.format(s=10.33333333333))

10.33


3.百分比格式化

print('{:.2%}'.format(0.33))

33.00%


4.转16进制

print('{:x}'.format(20))

14


5.转8进制

print('{:o}'.format(20))

24


6.左对齐,字符长度为10

print('{a:<10}'.format(a=10.333, b=21.21))

10.333 --- 3的后面还有4个空格


7.传入数据长度不足,用x填充

print('{a:x<10}'.format(a=12.1, b=23))  #<箭头尖指向左边,所以往左对齐

12.1xxxxxx


8.右对齐

print('{a:x>10}'.format(a=12.1, b=23))   #>箭头尖指向右边,所以往右对齐

xxxxxx12.1


9.两边对齐

print('{a:x^10}'.format(a=12.1, b=23))

xxx12.1xxx



进制转化

代码 功能 例子

bin() 十进制转二进制 bin(4)

oct() 十进制转八进制 oct(10)

hex() 十进制转十六进制 hex(16)

int('输入需转化的数字', 输入进制对应的数字) 其它进制转十进制 int('100',2)

ord() 将字符转换为ASCII码 ord('a')

chr() 将ASCII码转换成字符 chr(97)


1.bin() 十进制转二进制

print(bin(4))   #4=2*2,逢2进1,所以就是10*10=100

0b100 --- 0b表示进制,后面的100才是4转2进制的值


2.oct() 十进制转八进制

print(oct(10))   #10=8+2,逢8进1,所以为12

0o12


3.hex() 十进制转十六进制

print(hex(16))   #16=16+0,逢16进1,所以为10

0x10


4.int('输入需转进制的数字 ', 输入进制代表的数字)其他进制转十进制

int('100',2)  
#需要在交互模式环境下(或者python console);在命令窗口中,只能转为16进制,输其他进制会报错

4


5.ord() 将字符转换为ASCII码

print(ord('a'))

97


6.chr() 将ASCII码转换成字符

print(chr(97))

a


深浅拷贝(一般针对嵌套列表)

1.浅复制---copy()----内层id地址一致,外层不一致


浅复制:内层id一致,外层不一致


内层id地址一致,说明改动内嵌列表,其他含有这个内嵌列表的列表都会跟着改变

浅复制:内层id一致,a列表改变,b和c也跟着一起变



2.深复制---- 调用copy内置库(import copy)---copy.deepcopy()

内层地址不一致,外层地址不一致


深复制,内层地址不一致,当一列表改变时,另一列表不受影响