C或者shell控制輸出字元顏色

2021-10-08 04:02:45 字數 3842 閱讀 3791

在程式設計的時候有時候需要強調顯示一些資訊,加粗字型或者改變輸出字元顏色,來達到目的。

ascii碼本身就包含部分控制字元(33個,[0-31,127] (十進位制))1

2二進位制

十進位制十六進製制

縮寫unicode表示法

脫出字元表示法

名稱/意義

0000 000000

nul␀

^@空字元(null)

0000 000111

soh␁

^a標題開始 (start of heading)

0000 001022

stx␂

^b本文開始 (start of text)

0000 001133

etx␃

^c本文結束 (end of text )

0000 010044

eot␄

^d傳輸結束 (end of transmission)

0000 010155

enq␅

^e請求 (enquiry )

0000 011066

ack␆

^f確認回應 (acknowledge)

0000 011177

bel␇

^g響鈴 (bell)

0000 100088

bs␈^h退格 (backspace)

0000 100199

ht␉^i水平定位符號 (horizontal tab)

0000 1010

100alf␊

^j換行鍵 (nl line feed, new line )

0000 1011

110bvt␋

^k垂直定位符號 (vertical tab)

0000 1100

120cff␌

^l換頁鍵 (np form feed, new page )

0000 1101

130dcr␍

^mcr (字元) (carriage return )

0000 1110

140eso␎

^n取消變換(shift out)

0000 1111

150fsi␏

^o啟用變換(shift in)

0001 0000

1610

dle␐

^p跳出資料通訊 (data link escape)

0001 0001

1711

dc1␑

^q裝置控制一(xon 啟用軟體速度控制)

0001 0010

1812

dc2␒

^r裝置控制二 (device control 2 )

0001 0011

1913

dc3␓

^s裝置控制三(xoff 停用軟體速度控制)

0001 0100

2014

dc4␔

^t裝置控制四 (device control 4)

0001 0101

2115

nak␕

^u確認失敗回應 (negative acknowledge)

0001 0110

2216

syn␖

^v同步用暫停 (synchronous idle)

0001 0111

2317

etb␗

^w區塊傳輸結束 (end of trans. block)

0001 1000

2418

can␘

^x取消 (cancel)

0001 1001

2519em␙

^y連線介質中斷 (end of medium)

0001 1010

261a

sub␚

^z替換 (substitute)

0001 1011

271b

esc␛

^[退出鍵 (escape)

0001 1100

281cfs␜

^\檔案分割符 (file separator)

0001 1101

291dgs␝

^]組群分隔符 (group separator)

0001 1110

301ers␞

^^記錄分隔符 (record separator)

0001 1111

311fus␟

^_單元分隔符 (unit separator)

0111 1111

1277f

del␡

^?delete字元

而我們用到的方法就是使用終端轉義序列esc[*m3

, esc的八進位制為\033,十六進製制是\x1b,轉義字元是\e4

, 其中*可以是多個屬性的組合,用分號隔開。

常用的ansi控制碼如下(有些不支援,與terminal有關):

\033[0m 關閉所有屬性 

\033[1m 高亮

\033[2m 亮度減半

\033[3m 斜體

\033[4m 下劃線

\033[5m 閃爍

\033[6m 快閃

\033[7m 反顯

\033[8m 消隱

\033[9m 中間一道橫線

10-19 關於字型的

21-29 基本與1-9正好相反

30-37 設定前景色

30:黑

31:紅

32:綠

33:黃

34:藍色

35:紫色

36:深綠

37:白色

38 開啟下劃線,設定預設前景色

39 關閉下劃線,設定預設前景色

40-47 設定背景色

40 黑色背景

41 紅色背景

42 綠色背景

43 棕色背景

44 藍色背景

45 品紅背景

46 孔雀藍背景

47 白色背景

48 未知

49 設定預設背景色

50-89 沒用

90-109 設定前景背景的,比之前的顏色淺

ansi控制碼

\033[na 游標上移n行

\033[nb 游標下移n行

\033[nc 游標右移n行

\033[nd 游標左移n行

\033[y;xh設定游標位置

\033[2j 清屏

\033[k 清除從游標到行尾的內容

\033[s 儲存游標位置

\033[u 恢復游標位置

\033[?25l 隱藏游標

\033[?25h 顯示游標

例如:

#include

#define font_color_red "\e[31m"

#define font_color_green "\e[32m"

#define font_color_blue "\e[34m"

#define font_color_def "\e[39m"

intmain

(int argc,

char

*ar**)

效果如下,根據終端不同顯示可能有部分差異:

c語言怎麼改變視窗的字型顏色和背景顏色

ascii↩︎

↩︎ terminalescapesequences↩︎

escape_sequences_in_c↩︎

c 中輸出字元的位址

struct test int main 輸出結果 為什麼用cout輸出字元的位址出來是亂碼呢?看下面這段 int main 這裡s是這個字串的首位址,看到這裡應該明白為什麼上面要求輸出位址卻輸出亂碼。c 裡用cout輸出乙個字元的位址,輸出的結果是從該字元開始的乙個字串的內容 struct tes...

c 輸出字元的處理知識

cout printf a 浮點數 十六進製制數字和p 記數法 c99 a 浮點數 十六進製制數字和p 記法 c99 c 乙個字元 char c 乙個iso寬字元 d 有符號十進位制整數 int ld ld 長整型資料 long hd 輸出短整形。e 浮點數 e 記數法 e 浮點數 e 記數法 f ...

控制頁面中輸出字串的長度

一 1 index.php include once conn conn.php 呼叫連線資料庫的檔案 include once function.php sql mysql query select from tb new dynamic order by id desc limit 0,6 id...