转义字符,顾名思义,转变原来字符的意思
比如,字符n,和转义字符\n
转义字符\n是换行的意思,\是n的意思发生转变。
转义字符还有一些:
\?:书写连续多个问号时,防止他们被解析成三字母词。
三字母词:在过去的一些编译器上,支持三字母词, printf("??(") 在旧的编译器上结果为 ] ,为了打印出问号,所以有了\? 。现在的编译器已经无法验证
\' :用于表示字符常量 '
\" :用于表示一个字符串内部的双引号
\\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
\a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
\b :退格键,光标回退⼀个字符,但不删除字符。注意:光标回退之后,如果继续打印,会覆盖掉光标后面的内容。
\f :换页符,光标移到下一页。在现代系统上,这已经反映不出来了,行为改成类似于\v 。
\n :换行符。
\r :回车符,光标移到同一行的开头。(与\b类似,会覆盖前面打印的字符)
\t :制表符。
\v :垂直分隔符,光标移到下一个垂直制表位,通常是下一行的同一列。
下面两种转义字符可以理解为: 字符(ASCII码)的8进制或者16进制
\ddd:ddd 表示1~3个八进制的数字。如:\130表示字符X。
\xdd:dd表示两个十六进制数字。如:\x30表示字符0。
这两种字符是用来表示字符(ASCII码)的:
\0:null字符,代表没有内容,\0就是\ddd这类转义字符的一种,用于字符串的结束标志,其ASCII码值是0。
\ddd等转义字符都只算一个字符
程序验证:可以使用 string.h 中的strlen求字符串长度
strlen:统计的是字符串中\0之前的字符个数,不包括\0。strlen的返回值是size_t,占位符用%zd。
可以看到我们如果打印路径,就不能按照这样打印,因为可能会有转义字符,我们需要用 \\ 。