C语言的转义字符

 原文地址:http://blog.163.com/sunshine_linting/blog/static/44893323201181325818165/

 

在字符集中,有一类字符具备这样的特性:当从键盘上输入这个字符时,显示器上就能够显示这个字符,即输入什么就显示什么。这类字符称为可显示字符,如a、b、c、$、+和空格符等都是可显示字符。编程

另外一类字符却没有这种特性。它们或者在键盘上找不到对应的一个键(固然能够用特殊方式输入),或者当按键之后不能显示键面上的字符。其实,这类字符是为控制做用而设计的,故称为控制字符。函数

在C语言中,构成字符常量的控制字符必须用转义字符表示。转义字符是一种以“\”开头的字符。例如退格符用'\b'表示,换行符用'\n'表示。转义字符中的'\'表示它后面的字符已失去它原来的含义,转变成另外的特定含义。反斜杠与其后面的字符一块儿构成一个特定的字符。spa

转义字符是C语言中表示字符的一种特殊形式。转义字符以反斜'\'开头,后面跟一个字符或一个八进制或十六进制数表示。转义字符具备特定的含义,不一样于字符原有的意义,故称转义字符。设计

一般使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号('),用于表示字符串常量的双撇号(")和反斜杠(\)等。code

例如,下面例子printf函数的格式串中用到的'\n'就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用通常字符不便于表示的控制代码。blog

 

经常使用的转义字符及其含义字符串

 

\ddd   三位八进制get

\xhh   二位十六进制it

ASCAII码范围表class

  数字 0---9   表示:  48--57

  大写字母表示:   65---90

  小写字母表示:   97---122

  NUL  空字符  CR回车    LF换行

从表中能够看出,在C语言中有三种转义字符,它们是:通常转义字符、八进制转义字符和十六进制转义字符。

 

\b、\f\n\r\t,以及 \v 都是输出设备控制符。退格符(\b)使当前行的活跃位置后退一个位置。换页符(\f)使活跃位置跳到下一页的开端。注:换页符可用于控制打印机换页,但不会致使 PC 机的显示屏换页。换行符(\n)使活跃位置跳到下一行的开端。回车符 ( \r )使活跃位置返回当前行的开端。水平制表符(\t)使活跃位置移动若干个位置(一般是8个)。垂直制表符(\v)使活跃位置换若干行。注:\v可用于控制打印机换若干行,可是不会致使PC机的显示屏换行。

 若是要打印如下句子: "\ is called 'backslash'."

 咱们须要使用以下语句:

printf("\"\\ is called \'backslash\'.\""); 或者

printf("\"\\ is called 'backslash'.\""); 

注意,在字符串字面量中,不管写 \' 仍是 ',输出都是同样的。可是,在给字符变量赋值时,必定要写 \'。例如: 

char ch = ''';  

 

char ch = '\'';  

 

     \0oo 和 \xhh 是ASCII码的两种特殊表示形式。若是想用八进制ASCII码表示字符,能够在八进制数前面加上 \ ,而后用单引号引发来。例如:

            beep = '\007';       

 打头的那些0能够省略,也就是说,写成 '\07' 或者 '\7' 都同样。不管有没有打头的0 ,7 都会被当成八进制数处理。

     从 C89 开始,C提供了用十六进制表示字符常量的方法:在反斜杆后面写一个 x ,而后再写 1 到 3 个十六进制数字。例如:

            nl = '\xa';       

     注意:使用ASCII码时,要注意区分数字数字字符。例如:字符4ASCII码是52 ,'4' 表明字符 4 ,而不是数字4。此外,尽管 '\n'和 '\xa' ,'\a' 和 '\007' 是等价的,可是咱们应该尽量使用 '\n' 和 '\a',而不要用 '\xa' 和 '\007' 。这是由于前者易懂、便于记忆,并且移植性更高。

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 void main()
2 {
3     int a,b,c;
4     a=5; b=6; c=7;
5     printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);
6 }

此程序练习转义字符的使用:

a、b、c分别为整数5,6,7

调用printf显示程序运行结果:

5

67

56     7

程 序在第一列输出a值5以后就是“\n”,故回车换行;接着又是“\t”,因而跳到下一制表位置(设制表位置间隔为8),再输出b值6和c 值7;后又是"\n",所以再回车换行;以后又输出a值5和b值6;再次后"\t"跳到下一制表位置(与上一行的6 对齐),但下一转义字符“\b”又使退回一格,故紧挨着6再输出c值7。

 

使用转义字符时须要注意如下问题:

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”   长度为0。

相关文章
相关标签/搜索