C语言中的转义字符(新手必看)
在 C 语言中,
例如,

图 1 ASCII码表第一个字符
直接在字符串中写 0 会被认为是字符 0,但是我们可以使用
需要注意的是,

图 2 Hello 在 ASCII 码表中
现在我们可以编写代码来输出 "Hello":
接下来,介绍一个在 ASCII 码表中的转义字符,它的十进制数值为 10,八进制数值为 12。让我们看看将其输出会产生什么效果:
在 C 语言中,为了方便,一些常用的特殊字符可以使用助记字母来代替它们的数值,如下表所示。
C 语言中存在一些无法在键盘上输入的特殊字符,如退格符('\b')、换行符('\n')、回车符('\r')、水平制表符('\t')等,这些字符被称为不可见字符。
与上表中列出的字符一样,这些字符可以使用斜杠加数值来表示,也可以使用斜杠加助记字母来表示。但是,并非所有的不可见字符都有助记字母来代替它们的数值,因此在需要使用这些字符时,你可能需要查阅表格来获取它们对应的数值。
在 ASCII 码表中,十进制数值 0~31 对应的字符是不可见字符,如下图所示。

图 3 不可见字符
'\数值'
被称作转义字符,它虽然是用多个字符编写的,但实际上对应 ASCII 码表中的一个字符。例如,
\0
对应的是 ASCII 码表中第一个字符,如下图所示。
图 1 ASCII码表第一个字符
直接在字符串中写 0 会被认为是字符 0,但是我们可以使用
\
后跟一个 0 来表示数值 0。例如:#include <stdio.h> int main() { printf("Hello\0World"); return 0; }程序的运行结果为:
Hello
'\0' 常用于字符串的结束标志,从运行结果可以看出,"HelloWorld" 字符串被强行截断了,printf() 函数只输出 Hello,就认为字符串已经结束了。需要注意的是,
'\数值'
里的这个数值不是用十进制表示的,而是用八进制表示的,因此正确的写法如下:\数值(八进制)接下来,我们可以直接使用转义字符来输出"Hello"字符串,注意斜杠后面跟着的是八进制数值。从下图中找到"Hello"中每个字符对应的八进制数值,分别为 110、145、154、154、157。

图 2 Hello 在 ASCII 码表中
现在我们可以编写代码来输出 "Hello":
#include <stdio.h> int main() { printf("\110\145\154\154\157"); return 0; }运行结果为:
Hello
可以看到,使用转义字符成功地输出了 "Hello"。这进一步证明了:转义字符虽然在写法上可能包含多个字符,但实际上对应 ASCII 码表中的一个字符。接下来,介绍一个在 ASCII 码表中的转义字符,它的十进制数值为 10,八进制数值为 12。让我们看看将其输出会产生什么效果:
#include <stdio.h> int main() { printf("Hello\12World"); return 0; }运行结果为:
Hello
World
在 C 语言中,为了方便,一些常用的特殊字符可以使用助记字母来代替它们的数值,如下表所示。
转义序列 | 含义 | 八进制 | 十进制 |
---|---|---|---|
\a | 报警 | 7 | 7 |
\b | 退格 | 10 | 8 |
\n | 换页 | 14 | 12 |
\n | 换行 | 12 | 10 |
\r | 回车 | 15 | 13 |
\t | 水平制表 | 11 | 9 |
\v | 垂直制表 | 13 | 11 |
C 语言中存在一些无法在键盘上输入的特殊字符,如退格符('\b')、换行符('\n')、回车符('\r')、水平制表符('\t')等,这些字符被称为不可见字符。
与上表中列出的字符一样,这些字符可以使用斜杠加数值来表示,也可以使用斜杠加助记字母来表示。但是,并非所有的不可见字符都有助记字母来代替它们的数值,因此在需要使用这些字符时,你可能需要查阅表格来获取它们对应的数值。
在 ASCII 码表中,十进制数值 0~31 对应的字符是不可见字符,如下图所示。

图 3 不可见字符