C語言中的逸出字元

來源:互聯網
上載者:User

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 字元(NULL) 000
\ddd 1到3位八位元所代表的任一字元 三位八進位
\xhh 1到2位十六進位所代表的任一字元 二位十六進位

從表中可以看出,在C語言中有三種逸出字元,它們是:一般逸出字元、八進位逸出字元和十六進位逸出字元。

一般逸出字元

這種逸出字元,雖然在形式上由兩個字元組成,但只代表一個字元。常用的一般逸出字元為:
\a  \n  \t  \v  \b  \r  \f  \\ \’ \"

細心的讀者可能已經發現,逸出字元'\/'代表的反斜線"/"、逸出字元’\’’代表的字元"'"和逸出字元'\"'代表的字元""",其本身就是可顯示字元,為什麼還要對它轉義呢?
這是因為它們的原有的字元形式已作它用,其中單引號用作區分字元常量的括弧,雙引號用作區分字串(下面將要介紹字串)的括弧,而反斜線本身已用來表示逸出字元的開頭,因此必須對它們用逸出字元重新聲明。

八進位逸出字元

它是由反斜線'/'和隨後的1~3個八位元字構成的字元序列。例如,'\60'、'\101'、'\141'分別表示字元'0'、'A'和'a'。因為字元'0'、'A'和'a'的ASCII碼的八進位值分別為60、101和141。字元集中的所有字元都可以用八進位逸出字元表示。如果你願意,可以在八位元字前面加上一個0來表示八進位轉移字元。

十六進位逸出字元

它是由反斜線'/'和字母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 字元NULL,它的值是0。而字元'0'的ASCII碼值是48。因此,Null 字元’\0’不是字元0。另外,Null 字元不等於空白字元,空白字元的ASCII碼值為32而不是0。編程式時,讀者應當區別清楚。
  • 5) 如果反斜線之後的字元和它不構成逸出字元,則’\’不起轉義作用將被忽略。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.