簡體   English   中英

在控制台中更改文本顏色

[英]Change Text Color in the Console

我是 C 的新手,我想知道使用 system() 是否是更改控制台中文本顏色的好方法。

int main()
{
    system("echo \x1b[32m");
    printf("hello");

    return 0;
}

它是跨平台的嗎?

你可以做

printf("\x1b[32m");

與系統命令一樣,您只是告訴它打印將控制台變為綠色的轉義碼,因此您可以單獨打印它以達到相同的效果。 Printf 適用於大多數設備,而系統無法在某些設備上運行,因此首選 printf。

如果您有興趣,這里有更多顏色代碼的列表: https://gist.github.com/RabaDabaDoba/145049536f815903c79944599c6f952a

這段代碼有兩個問題:

  1. system("echo \x1b[32m"); puts("\x1b[32m");做完全相同的事情但更慢。 它創建一個子進程並運行某個條帶的命令解釋器,然后它必須解釋命令echo ␛[32m 我不知道有什么理由寫system("echo...")

  2. 字節序列␛[32m ( 1b 5b 33 32 6d ) 是一個ANSI X3.64 終端控制代碼,無論stdout連接到什么,它都可能理解也可能不理解。 最好使用終端控制庫,例如ncurses ,它會弄清楚它在說什么並使用正確的控制序列(或者根本不使用 colors,如果它們不受支持)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM