色付きの出力を必要とする簡単なアプリケーションを作成しています。 emacsやbashのように出力を色付けするにはどうすればよいですか?
私のアプリケーションはUNIXシステム専用であるため、Windowsは気にしません。
最新の端末エミュレータはすべて、ANSIエスケープコードを使用して色などを表示します。
ライブラリを気にしないでください、コードは本当にシンプルです。
詳細は こちら です。
Cの例:
#include <stdio.h>
#define ANSI_COLOR_RED "\x1b[31m"
#define ANSI_COLOR_GREEN "\x1b[32m"
#define ANSI_COLOR_YELLOW "\x1b[33m"
#define ANSI_COLOR_BLUE "\x1b[34m"
#define ANSI_COLOR_Magenta "\x1b[35m"
#define ANSI_COLOR_CYAN "\x1b[36m"
#define ANSI_COLOR_RESET "\x1b[0m"
int main (int argc, char const *argv[]) {
printf(ANSI_COLOR_RED "This text is RED!" ANSI_COLOR_RESET "\n");
printf(ANSI_COLOR_GREEN "This text is GREEN!" ANSI_COLOR_RESET "\n");
printf(ANSI_COLOR_YELLOW "This text is YELLOW!" ANSI_COLOR_RESET "\n");
printf(ANSI_COLOR_BLUE "This text is BLUE!" ANSI_COLOR_RESET "\n");
printf(ANSI_COLOR_Magenta "This text is Magenta!" ANSI_COLOR_RESET "\n");
printf(ANSI_COLOR_CYAN "This text is CYAN!" ANSI_COLOR_RESET "\n");
return 0;
}
カラーシーケンスの処理は煩雑になり、システムごとに異なるカラーシーケンスインジケーターが使用される場合があります。
ncurses を使用することをお勧めします。色以外に、ncursesはコンソールUIで他の多くのきちんとしたことを行うことができます。
特別な色制御コードを出力して、色付きの端末出力を得ることができます。これは、 色の印刷方法 に役立つリソースです。
例えば:
printf("\033[22;34mHello, world!\033[0m"); // shows a blue hello world
編集:私のオリジナルのものはプロンプトカラーコードを使用していましたが、動作しません:(これは動作します(テストしました)。
1つの色をすべての機能に割り当てて、より便利にすることができます。
#define Color_Red "\33[0:31m\\]" // Color Start
#define Color_end "\33[0m\\]" // To flush out prev settings
#define LOG_RED(X) printf("%s %s %s",Color_Red,X,Color_end)
foo()
{
LOG_RED("This is in Red Color");
}
賢明なように、異なる色コードを選択し、これをより一般的にすることができます。
プログラム全体に同じ色を使用する場合、printf()
関数を定義できます。
#include<stdio.h>
#define ah_red "\e[31m"
#define printf(X) printf(ah_red "%s",X);
#int main()
{
printf("Bangladesh");
printf("\n");
return 0;
}
#include <stdio.h>
#define BLUE(string) "\x1b[34m" string "\x1b[0m"
#define RED(string) "\x1b[31m" string "\x1b[0m"
int main(void)
{
printf("this is " RED("red") "!\n");
// a somewhat more complex ...
printf("this is " BLUE("%s") "!\n","blue");
return 0;
}
読み取り Wikipedia :
文字列の書式設定では文字を印刷できないためです。次のような形式を追加することも考えられます
#define PRINTC(c,f,s) printf ("\033[%dm" f "\033[0m", 30 + c, s)
f
はprintf
の形式です
PRINTC (4, "%s\n", "bar")
blue bar
を印刷します
PRINTC (1, "%d", 'a')
red 97
を印刷します