C语言通过printf()设置输出显示方式
在調試程序時多數情況下要輸出很多提示信息,通過控制輸出字體的顏色的顯示方式可以方便我們快速查看有用的信息,而printf()的終端轉義就為我們提供了這樣的手段。
我們大家知道在程序結尾加上\n就可在輸出的時候換行,其實這就是個轉義字符。而字體顏色和顯示方式的轉義字符由控制臺控制(Console Conrols )是系統的顯示功能與具體語言無關。
轉義字符以控制字符'ESC'開頭。該字符的ASCII碼十進制表示為27,十六進制表示為0x1B,八進制表示為033。多數轉義字符超過兩個字符,故通常以'ESC'和左括號'['開頭。該起始字符稱為控制序列引導符(CSI,Control Sequence Intro),通常由'\033['或'\e['代替。
具體格式為:
\033[parameter1;parameter2...m?輸出字符?\033[0m \\ ?parameter為屬性值,多個屬性之間用分號隔開,與順序無關。 \\??\033[0m表示將所有屬性重設為默認值,否則會影響后續的輸出。注意:轉義字符可被控制字符'CAN'(Cancel )和'SUB'(Substitute)中斷?
常用顏色屬性值如下:
黑色 | 紅色 | 綠色 | 黃色 | 藍色 | 紫色 | 深綠色 | 白色 | |
字體顏色 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
背景顏色 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
部分ANSI控制碼:
\33[0m 關閉所有屬性?
\33[1m 設置高亮度?
\33[4m 下劃線?
\33[5m 閃爍?
\33[7m 反顯?
\33[8m 消隱?
\33[30m -- \33[37m 設置前景色?
\33[40m -- \33[47m 設置背景色?
\33[nA 光標上移n行?
\33[nB 光標下移n行?
\33[nC 光標右移n行?
\33[nD 光標左移n行?
\33[y;xH設置光標位置?
\33[2J 清屏?
\33[K 清除從光標到行尾的內容?
\33[s 保存光標位置?
\33[u 恢復光標位置?
\33[?25l 隱藏光標?
\33[?25h 顯示光標
附實現程序:
運行環境:windows10->vmware15pro->Debian 6.3.0;
#include#include int main(int argc, char* argv[]){ ? ? ? ?printf(" The colour test starting ---\n");printf(" Upcoming screen cleaning ---\n"); ? ? ? ?for(int i=3; i>0; i--) ? ? ? ?{ ? ? ? ? ? ? ? ?sleep(1); ? ? ? ? ? ? ? ?printf(" Count down %d\n",i); ? ? ? ? ? ? ? ?sleep(1); ? ? ? ?} ? ? ? ?printf("\033[2J");printf("\033[30m This is black ?word ?\033[0m\n"); ? ? ? ?printf("\033[31m This is red ? ?word ?\033[0m\n"); ? ? ? ?printf("\033[32m This is green ?word ?\033[0m\n"); ? ? ? ?printf("\033[33m This is yellow word ?\033[0m\n"); ? ? ? ?printf("\033[34m This is blud ? word ?\033[0m\n"); ? ? ? ?printf("\033[35m This is purple word ?\033[0m\n"); ? ? ? ?printf("\033[36m This is dgreen word ?\033[0m\n"); ? ? ? ?printf("\033[37m This is white ?word ?\033[0m\n"); ? ? ? ?printf("\033[40m This is black ?bground ?\033[0m\n"); ? ? ? ?printf("\033[41m This is red ? ?bground ?\033[0m\n"); ? ? ? ?printf("\033[42m This is green ?bground ?\033[0m\n"); ? ? ? ?printf("\033[43m This is yellow bground ?\033[0m\n"); ? ? ? ?printf("\033[44m This is blud ? bground ?\033[0m\n"); ? ? ? ?printf("\033[45m This is purple bground ?\033[0m\n"); ? ? ? ?printf("\033[46m This is dgreen bground ?\033[0m\n"); ? ? ? ?printf("\033[47m This is white ?bground ?\033[0m\n"); ? ? ? ?printf("\033[43;35m This is purple word yellow bground ?\033[0m\n"); ? ? ? ?printf("\033[1m This is Thickening ? ?\033[0m\n"); ? ? ? ?printf("\033[3m This is Italics ? ? ? \033[0m\n"); ? ? ? ?printf("\033[4m This is Underline ? ? \033[0m\n"); ? ? ? ?printf("\033[5m This is Twinkle ? ? ? \033[0m\n"); ? ? ? ?printf("\033[7m This is Anti color ? ?\033[0m\n");/* ? ? ? ? ? ? ?printf("\033[nA"); ? ? ? ? ? ? ?printf("\033[nB"); ? ? ? ?printf("\033[nC"); ? ? ? ? ? ? ?printf("\033[nD"); ? ? ? ?//使光標上下右左移動n位 ? ? ? ?*/ ? ? ? ?printf("\n The colour test end------\n\n");return 0;}也可將其定義為宏寫在頭文件中,方便重復引用。
執行結果如下:
聲明:
本文于網絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。
總結
以上是生活随笔為你收集整理的C语言通过printf()设置输出显示方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言 | 一维数组
- 下一篇: 生而为人下句怎么接