【黑科技】轉義字符\e

【黑科技】轉義字符\e

Windows 平臺下,conio.h 中有許多操作控制檯顏色、格式的函數。但是再 Linux 平臺下卻沒有類似的函數。經過在網上的一番搜索,找到了解決此問題的方法——轉義字符\e
注意,\e這種寫法可能並不被你的編譯器所支持(Linux下的GNU和Bash支持,親測無誤),因爲他並不是ANSI C的。可以用\033代替。
此種方式在 Windows 下無效。
注意:格式更改之後,即使更改他的程序退出,格式也會保留,除非使用代碼0清除或退出這個終端。

1. 輸出格式

使用以下代碼更改輸出格式:

printf("\e[%dm", format);

其中format是格式代碼:

代碼十進制 作用
0 清除所有格式
1 加粗,與格式2衝突
2 字體變暗,與格式1衝突
3 斜體
4 下劃線
5 背景加亮,但有的機器上沒效果
6 並沒有效果
7 反顯(背景色當前景色,前景色當背景色)
8 隱形(字符仍然存在,可以選中,只是看不到)
9 刪除線

2. 顏色

使用以下代碼字符色:

printf("\e[%dm", 30 + color); // 前景色
printf("\e[%dm", 40 + color); // 背景色

其中,color是顏色代碼:

代碼十進制 顏色
0 黑色,注意和控制檯的背景色稍有區別
1 紅色
2 綠色
3 黃色
4 藍色
5 紫色
6 青色
7 白色,但實際上是亮灰色

注意:清除格式同樣會恢復默認顏色。

3. 其他指令

使用以下代碼執行控制檯指令:

printf("\e%s", cmd);

其中cmd是指令字符串:

指令字符串 作用
c 清除屏幕,不可恢復
[y;xH] 將光標移至第x列第y行處
[nA 將光標上移n
[nB 將光標下移n
[nC 將光標右移n
[nD 將光標左移n
[K 清除從光標(包括)到行末的內容
[s 記錄光標的位置(只能記一次)
[u 恢復光標的位置
[?25l 顯示光標
[?25h 隱藏光標

本文不定期更新

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章