【黑科技】轉義字符\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 | 隱藏光標 |
本文不定期更新