C语言中的转义字符

  • 格式:pdf
  • 大小:91.15 KB
  • 文档页数:2

C语⾔中的转义字符

C语⾔中的转义字符

在字符集中,有⼀类字符具有这样的特性:当从键盘上输⼊这个字符时,显⽰器上就可以显⽰这个字符,即输⼊什么就显⽰什么。这类字符

称为可显⽰字符,如a、b、c、$、+和空格符等都是可显⽰字符。

另⼀类字符却没有这种特性。它们或者在键盘上找不到对应的⼀个键(当然可以⽤特殊⽅式输⼊),或者当按键以后不能显⽰键⾯上的字符。

其实,这类字符是为控制作⽤⽽设计的,故称为控制字符。

在C语⾔中,构成字符常量的控制字符必须⽤转义字符表⽰。转义字符是⼀种以“/”开头的字符。例如退格符⽤'/b'表⽰,换⾏符⽤'/n'表⽰。转

义字符中的'/'表⽰它后⾯的字符已失去它原来的含义,转变成另外的特定含义。反斜杠与其后⾯的字符⼀起构成⼀个特定的字符。

转义字符是C语⾔中表⽰字符的⼀种特殊形式。转义字符以反斜'/'开头,后⾯跟⼀个字符或⼀个⼋进制或⼗六进制数表⽰。转义字符具有特

定的含义,不同于字符原有的意义,故称转义字符。

通常使⽤转义字符表⽰ASCII码字符集中不可打印的控制字符和特定功能的字符,如⽤于表⽰字符常量的单撇号('),⽤于表⽰字符串常量

的双撇号(")和反斜杠(/)等。

例如,下⾯例⼦printf函数的格式串中⽤到的'/n'就是⼀个转义字符,其意义是“回车换⾏”。转义字符主要⽤来表⽰那些⽤⼀般字符不便于表⽰

的控制代码。

常⽤的转义字符及其含义

转义字符 意义 ASCII码值(⼗进制)\a 响铃(BEL) 007

\b 退格(BS) ,将当前位置移到前⼀列 008

\f 换页(FF),将当前位置移到下页开头 012

\n 换⾏(LF) ,将当前位置移到下⼀⾏开头 010

\r 回车(CR) ,将当前位置移到本⾏开头 013

\t ⽔平制表(HT) (跳到下⼀个TAB位置) 009

\v 垂直制表(VT) 011

\\ 代表⼀个反斜线字符''\' 092

\' 代表⼀个单引号(撇号)字符 039

\" 代表⼀个双引号字符 034

\0 空字符(NULL) 000

\ddd 1到3位⼋进制数所代表的任意字符 三位⼋进制

\xhh 1到2位⼗六进制所代表的任意字符 ⼆位⼗六进制

从表中可以看出,在C语⾔中有三种转义字符,它们是:⼀般转义字符、⼋进制转义字符和⼗六进制转义字符。

1. ⼀般转义字符

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

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

细⼼的读者可能已经发现,转义字符'\\'代表的反斜杠"\"、转义字符’\’’代表的字符"'"和转义字符'\"'代表的字符""",其本⾝就是可显⽰字符,

为什么还要对它转义呢?

这是因为它们的原有的字符形式已作它⽤,其中,单引号⽤作区分字符常量的括号,双引号⽤作区分字符串(下⾯将要介绍字符串)的括号,

⽽反斜杠本⾝已⽤来表⽰转义字符的开头,因此必须对它们⽤转义字符重新声明。󰀀

2. ⼋进制转义字符

它是由反斜杠'\'和随后的1~3个⼋进制数字构成的字符序列。例如,'\60'、'\101'、'\141'分别表⽰字符'0'、'A'和'a'。因为字符'0'、'A'和'a'的ASCII码的⼋进制值分别为60、101和141。

字符集中的所有字符都可以⽤⼋进制转义字符表⽰。

如果你愿意,可以在⼋进制数字前⾯加上⼀个0来表⽰⼋进制转移字符。󰀀

3. ⼗六进制转义字符󰀀

它是由反斜杠'\'和字母x(或X)及随后的1~2个⼗六进制数字构成的字符序列。例如,'\x30'、'\x41'、'\X61'分别表⽰字符'0'、'A'和'a'。因为字

符'0'、'A'和'a'的ASCII码的⼗六进制值分别为0x30、0x41和0x61。 可见,字符集中的所有字符都可以⽤⼗六进制转义字符表⽰。

由上可知,使⽤⼋进制转义字符和⼗六进制转义字符,不仅可以表⽰控制字符,⽽且也可以表⽰可显⽰字符。但由于不同的计算机系统上采

⽤的字符集可能不同,因此,为了能使所编写的程序可以⽅便

地移植到其他的计算机系统上运⾏,程序中应少⽤这种形式的转义字符。

使⽤转义字符时需要注意以下问题:

1)转义字符中只能使⽤⼩写字母,每个转义字符只能看作⼀个字符。

2)/v垂直制表和/f换页符对屏幕没有任何影响,但会影响打印机执⾏响应操作。

3)在C程序中,使⽤不可打印字符时,通常⽤转义字符表⽰。

4)转义字符’/0’表⽰空字符NULL,它的值是0。⽽字符'0'的ASCII码值是48。因此,空字符’/0’不是字符0。另外,空字符不等于空格字符,空

格字符的ASCII码值为32⽽不是0。编程序时,读者应当区别清楚。

5) 如果反斜线之后的字符和它不构成转义字符,则’/’不起转义作⽤将被忽略。

例如:

printf(“a/Nbc/nDEF/n”);

输出:

aNbc

DEF

6)转义字符也可以出现在字符串中,但只作为⼀个字符看待。

例 求下⾯字符串的长度

“/026[12,m” 长度为6

“/0mn” 长度为1。(想想:为什么不是2)