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)