C語言學習筆記 轉義字元

2021-08-15 22:15:09 字數 3237 閱讀 5881

所有的ascii碼都可以使用轉義字元來表示,其中包括了常用的列印字元和一些具有特殊功能的非列印字元。 

在c語言中,列印字元,如字母、數字、空格等字元,可以直接使用引號包含這些字元即可構成字元或字串資料。 

對於非列印字元,在引號中則必須使用轉移字元來進行表示。

首先轉義字元和普通字元資料一樣,只能夠出現在單引號或者雙引號中。並且轉義字元都以\開頭。 

轉義字元有三種表示方式,分別是 

1. 8進製\加8進製數字 

2. 16進製制\x加16進製制數字 

3. 特殊轉義字元\加有特殊意義的符號

注意:轉義字元不存在10進製的書寫形式。

數字轉義字元只能使用8進製和16進製制。 

每個字元的轉義數值分別對應了其ascii碼的值。 

例如:字元

轉義字元(8進製)

轉義字元(16進製制)

『a』『\141』

『\x61』

『+』『\53』

『\x』

『0』『\60』

『\x30』

所有的ascii字元都可以使用這種方式進行表示。 

在c語言中,如果想用ascii碼值的10進製方式輸入字元。可以使用10進製整數直接給字元變數賦值,例如char a=97;同樣這種方式能夠輸入所有的ascii字元,但是這種方式只能對單個字元變數進行賦值,並不能夠對整個字串進行一次性賦值。

列印字元,可以使用字元本身和數字轉義兩種方式表示。 

非列印字元,除了使用數字轉義的方式表示外,也有另一種表示方式,特殊符號轉義。 

這種轉義方式由反斜槓和乙個列印字元組成,用來表示乙個非列印字元,常用相關的字元如下。

轉義字元

意義ascii碼值(10進製)

縮寫**

\a響鈴(bel)

007alert

\b退格(bs) ,將當前位置移到前一列

008backspace

\f換頁(ff),將當前位置移到下頁開頭

012form feed

\n換行(lf) ,將當前位置移到下一行開頭

010line feed

\r回車(cr) ,將當前位置移到本行開頭

013return

\t水平製表(ht) (跳到下乙個tab位置)

009tab

\v垂直製表(vt)

011vertical tab

上面的字元中,需要特別注意三個字元。

\v垂直製表符

在windows控制台中,垂直製表符並不能夠在控制台中直接列印想要的製表效果,而是以乙個特殊的字元來表示。 

在linux環境下,垂直製表符能夠正常的實現垂直製表的效果。

\n\r換行和回車

在日常的使用中,我們經常習慣性的將換行和回車等同起來。換行就是回車,回車就是換行。或者說,回車用來換行,這裡的回車更多的是指鍵盤上的enter鍵。 

實際上,回車和換行是兩個不同的概念。 

這個字元的產生和這個東西有關teletype_model_33

它們的由來網上是這麼流傳的: 

在計算機還沒有出現之前,有一種叫做電傳打字機(teletype model 33)的玩意,每秒鐘可以打10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。 

於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元。乙個叫做「回車」,告訴打字機把列印頭定位在左邊界;另乙個叫做「換行」,告訴打字機把紙向下移一行。 

這就是「換行」和「回車」的來歷,從它們的英語名字上也可以看出一二。 

後來,計算機發明了,這兩個概念也就被般到了計算機上。那時,儲存器很貴,一些科學家認為在每行結尾加兩個字元太浪費了,加乙個就可以。於是,就出現了分歧。 

- unix系統裡,每行結尾只有「《換行》」,即「\n」; 

- windows系統裡面,每行結尾是「《換行》《回車》」,即「\n\r」; 

- mac系統裡,每行結尾是「《回車》」。

乙個直接後果是,unix/mac系統下的檔案在windows裡開啟的話,所有文字會變成一行;而windows裡的檔案在unix/mac下開啟的話,在每行的結尾可能會多出乙個^m符號。

從上面的文字中可以看出,實際上換行的功能本應該是由\n\r共同來完成的,後來在計算機中不同的系統出現了不同的規定。 

但是我們知道在c語言中,換行的操作使用的是\n,但是上面的文字說在windows下換行使用的是\n\r。這是不是有矛盾呢。 

實際上並沒有。 

在windows控制台下執行c語言,我們知道要換行時使用\n便能完成操作。但是當要向檔案輸出資料時,如果我們要實現換行,在**中我們仍然可以使用\n來進行換行的操作。但是在檔案實際的儲存資料中,換行使用的是\n\r

簡單說一下,在c語言中,如果\r後輸出其他字元的話,之前在本行開頭輸出的字元將會被覆蓋。 

另外,從理論上講,在linux環境下\v\r組合也能夠用於換行,但是在實際應用中並不會這樣使用。

所有轉義字元和意義總結如下表

轉義字元

意義ascii碼值(10進製)

\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\?

代表乙個問號

063\0

空字元(null)

000\ooo

1到3位八進位制數所代表的任意字元

三位八進位制

\xhh

1到2位十六進製製所代表的任意字元

二位十六進製制

C語言學習筆記 轉義字元和運算子

本文不詳細講解全部運算子,只調出最容易踩坑和不好理解的部分作出分析 一 轉義運算子 轉義字元 含義轉義字元 含義 n 換行 t 水平製表 v垂直製表 b退格 r回車 f換頁 a響鈴 反斜線 單引號 雙引號 ddd 3位8進製代表的字元 xhh 2位16進製制代表的字元 下面用人話解釋一下 v t。d...

Go語言學習002 轉義字元

常用的轉義字元 t 表示乙個製表符,通常可以使用它來排版 n 換行符 乙個 乙個 r 乙個回車。fmt.println 我與橫刀向天笑,r去留肝膽兩崑崙 package main 表示該 hello.go 檔案所在的包是 main。在 go 中,每個檔案都必須歸屬於乙個包 import fmt fm...

C語言再學習 轉義字元

編輯 所有的轉義字元和所對應的意義 轉義字元 意義 ascii碼值 十進位制 a 響鈴 bel 007 b 退格 bs 將當前位置移到前一列 008 f 換頁 ff 將當前位置移到下頁開頭 012 n 換行 lf 將當前位置移到下一行開頭 010 r 回車 cr 將當前位置移到本行開頭 013 t ...