首页 > 编程笔记 > C语言笔记 阅读:33

C语言中的转义字符(新手必看)

在 C 语言中,'\数值'被称作转义字符,它虽然是用多个字符编写的,但实际上对应 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

可以看出,'\12' 的效果和 '\n' 相同,因为它们实际上是同一个字符。

在 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 不可见字符

相关文章