C言語でコンソールカラーを変更する方法
C言語では、コンソールカラーを変更するための特別な文字列を使用できます。以下は、一般的なコンソールカラー変更の方法です。
- Windows API関数を活用して
- Windowsプラットフォームでは、Windows API関数のSetConsoleTextAttributeでコンソールのテキストカラーと背景カラーを変更できます。例えば、以下のコードではテキストカラーを赤に設定します。
“`c++
#includeint main() {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_RED);
printf(“This is red text.\n”);
return 0;
}
“` - 前述のコードにおいて、SetConsoleTextAttribute関数の2番目の引数には、FOREGROUND_RED | FOREGROUND_INTENSITYのように、複数のカラ コードを組み合わせることができます。これは明るい赤色を表します。
- ちなみに、GetConsoleScreenBufferInfo 関数でコンソールの現在のアトリビュートを取得し、SetConsoleTextAttribute 関数でアトリビュートを変更し、SetConsoleCursorPosition 関数でカーソル位置を元の位置に戻すことで、色コードによる後続の出力への影響を回避できます。
- ANSIエスケープシーケンスの使用:
- ANSI エスケープシーケンスは、テキストの色、背景色、その他コンソール属性を変更するために使用される特殊な一連の文字です。ほとんどのターミナルとコンソールでは、一般的な ANSI エスケープシーケンスがサポートされています。
- 例えば、printf関数を使って赤色の文字を出力するコードを示す。 printf(“\x1b[31mThis is red text.\x1b[0m\n”);
- 上記のコードで、\\x1b はエスケープ文字を表し、[31m はその後のテキストの色を赤に設定し、[0m はその後のテキストの属性をデフォルトに戻します。
- ANSIエスケープシーケンスでは、背景色の変更や、太字、斜体などのその他の属性を設定することもできます。具体的なシーケンスは、ANSIエスケープシーケンスに関するドキュメントを参照してください。
なお、OS や端末/コンソールによってコンソールカラーの設定が異なり、上記の方法でも設定できない端末/コンソールもあります。そのため、実際に運用される場合は、対象の端末/コンソールの要件やサポート状況に合わせて適切な方法を選択してください。