C语言——转义字符

Posted 徐徐同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言——转义字符相关的知识,希望对你有一定的参考价值。

转义字符

目录

一、转义字符

二、举例(各种转义字符+判断字符个数)

一、转义字符

1.1转义字符 及其 含义

转义字符含义
\\n换行

\\r

回车
\\b退格符
\\f

进纸符(就是换页,将后面的文本打印到一张新纸)

//不常用

\\a警告字符,电脑响铃
\\t水平制表符
\\v

垂直制表符

//不常用

\\'用于表示一个字符常量 '
\\"用于表示字符串内部的双引号
\\\\用于表示一个反斜杠\\(防止被解释成一个转义字符)
\\?用于表示一个问号?(要输出连续多个问号时使用,防止被解释成三字母词)*①
\\0表示空字符
\\dddddd表示1~3个八进制数字
\\xdddd表示2个十六进制数字

*① ANSI C标准中,定义了9个三字母词,(如"??)"直接printf后会变成"]").但是不同编译器对ANSI C的支持不一样,我用的VS2022就不支持三字母词,栗子如下:


二、举例(各种转义字符+判断字符个数)

2.1 转义字符举例

①\\n和\\r

\\n:

#include <stdio.h>

int main()

    printf("I\\nlove\\nChina\\n");
    
    return 0;

调试结果:  I
                    love
                    China

→ 每写一个\\n,接下来的内容到下一

\\r:

#include <stdio.h>

int main()

    printf("I\\nlove\\rChina\\n");
    
    return 0;

 调试结果:I              

                   China

→\\r 的“回车”跟咱们平时说的“回车”不同,平时说的回车相当于这里的换行,而 \\r  则是让光标返回到本行最开始的位置,如果后面继续输入字符,会逐个覆盖本行原来的字符

②\\b:作用相当于键盘上的Backspace键,显示的时候光标退回前一个字符,但不会删除这个字符,but如果后边有新的字符,新的字符会覆盖退回的那个字符

#include <stdio.h>

int main()

    printf("abcd\\be");
    
    return 0;

调试结果:acbe

③\\t: 水平制表符,相当于键盘上的Tab键

④\\ddd和\\xdd:

以\\ddd为例,ddd表示3个八进制数字(比如:007,072,114(无意义的0可省略)),把这个数字转换成十进制数字,输出即为这个十进制数字对应ASCII码值。

同理,对于\\xdd,\\x是固定的格式,dd表示2个十六进制数字,把这个数字转换成十进制数字,输出即为这个十进制数字对应ASCII码值。

#include <stdio.h>
int main()

printf("\\041 ");
printf("\\073 ");
printf("\\114 \\n");

printf("\\x31 ");
printf("\\x52 ");
return 0;

输出为:

因为第一组三个八进制数字分别对应十进制:33、59、76

第二组两个十六进制数字分别对应十进制:49、82

对照ASCII码表,

 是不是非常显然了呢

2.2 判断字符个数

#include <stdio.h>
int main()

	printf("hello\\ab\\t\\n");
	return 0;

字符数为9,因为\\a、\\t、\\n都是转义字符,当作一个字符来看

②进制-陷阱1

#include <stdio.h>
int main()

	printf("??as:\\629\\test");
	return 0;

字符数为11,这里要注意的是\\629不是一个转义字符,因为“\\ddd”规定的d是八进制数字,而八进制数字每一位只包含0~7中的一个数字,因此\\629是两个字符:“\\62”、“9”

③进制-陷阱2

#include <stdio.h>
int main()

	printf("??as:\\651\\test");
	return 0;

debug时会报错,因为\\651对应十进制425,超过了ASCII码表的范围(0~127)

C语言基础:转义字符

1.转义字符

字符集(Character Set)为每个字符分配了唯一的编号,称为编码值。在C语言中,一个字符除了可以用它的实体(也就是真正的字符)表示,还可以用编码值表示。这种使用编码值来间接地表示字符的方式称为转义字符(Escape Character)。

转义字符以\\或者\\x开头,以\\开头表示后跟八进制形式的编码值,以\\x开头表示后跟十六进制形式的编码值。对于转义字符来说,只能使用八进制或者十六进制。

字符 1、2、3、a、b、c 对应的 ASCII 码的八进制形式分别是 61、62、63、141、142、143,十六进制形式分别是 31、32、33、61、62、63。下面的例子演示了转义字符的用法:

#include <stdio.h>

int main() 
	printf("\\61 \\n");  //字符1
	printf("\\141 \\n");   //字符a
	printf("\\x31 \\n");  //字符1
	printf("\\x61 \\n");   //字符a
	char *str1 = "\\x31\\x32\\x33\\x61\\x62\\x63";  //字符串"123abc"
	char *str2 = "\\61\\62\\63\\141\\142\\143";  //字符串"123abc"
	char *str3 = "The string is: \\61\\62\\63\\x61\\x62\\x63";  //混用八进制和十六进制形式
	
	return 0;

运行结果:

转义字符既可以用于单个字符,也可以用于字符串,并且一个字符串中可以同时使用八进制形式和十六进制形式。

示例:

#include <stdio.h>
int main() 
	printf("\\x68\\164\\164\\x70://www.baidu.com");
	return 0;

运行结果:

对于 ASCII 编码,0~31(十进制)范围内的字符为控制字符,它们都是看不见的,不能在显示器上显示,甚至无法从键盘输入,只能用转义字符的形式来表示。不过,直接使用 ASCII 码记忆不方便,也不容易理解,所以,针对常用的控制字符,C语言又定义了简写方式,完整的列表如下:

转义字符意义ASCII码值(十进制)
\\a响铃(BEL)007
\\b退格(BS) ,将当前位置移到前一列008
\\f换页(FF),将当前位置移到下页开头012
\\n换行(LF) ,将当前位置移到下一行开头010
\\r回车(CR) ,将当前位置移到本行开头013
\\t水平制表(HT)009
\\v垂直制表(VT)011
\\’单引号039
\\"双引号034
\\\\反斜杠092

说明:

\\n和\\t是最常用的两个转义字符:

  • \\n用来换行,让文本从下一行的开头输出,前面的章节中已经多次使用;
  • \\t用来占位,一般相当于四个空格,或者 tab 键的功能。

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

转义字符示例:

#include <stdio.h>
int main() 
	puts("C\\tPython\\tJava\\n\\"Java\\" The Best Lang!");
	return 0;

运行结果:



以上是关于C语言——转义字符的主要内容,如果未能解决你的问题,请参考以下文章

关于c语言 转义字符的退格

初识C语言第一话之数据类型常量变量字符串转义字符与注释

C语言学习--初始C语言02

c语言中不按转义字符处理是啥意思

c中关于转义字符!!

C语言转义字符基础总结