C言語でコンソールカラーを変更する方法

C言語では、コンソールカラーを変更するための特別な文字列を使用できます。以下は、一般的なコンソールカラー変更の方法です。

  1. Windows API関数を活用して
  2. 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;
    }
    “`
  3. 前述のコードにおいて、SetConsoleTextAttribute関数の2番目の引数には、FOREGROUND_RED | FOREGROUND_INTENSITYのように、複数のカラ コードを組み合わせることができます。これは明るい赤色を表します。
  4. ちなみに、GetConsoleScreenBufferInfo 関数でコンソールの現在のアトリビュートを取得し、SetConsoleTextAttribute 関数でアトリビュートを変更し、SetConsoleCursorPosition 関数でカーソル位置を元の位置に戻すことで、色コードによる後続の出力への影響を回避できます。
  5. ANSIエスケープシーケンスの使用:
  6. ANSI エスケープシーケンスは、テキストの色、背景色、その他コンソール属性を変更するために使用される特殊な一連の文字です。ほとんどのターミナルとコンソールでは、一般的な ANSI エスケープシーケンスがサポートされています。
  7. 例えば、printf関数を使って赤色の文字を出力するコードを示す。 printf(“\x1b[31mThis is red text.\x1b[0m\n”);
  8. 上記のコードで、\\x1b はエスケープ文字を表し、[31m はその後のテキストの色を赤に設定し、[0m はその後のテキストの属性をデフォルトに戻します。
  9. ANSIエスケープシーケンスでは、背景色の変更や、太字、斜体などのその他の属性を設定することもできます。具体的なシーケンスは、ANSIエスケープシーケンスに関するドキュメントを参照してください。

なお、OS や端末/コンソールによってコンソールカラーの設定が異なり、上記の方法でも設定できない端末/コンソールもあります。そのため、実際に運用される場合は、対象の端末/コンソールの要件やサポート状況に合わせて適切な方法を選択してください。

bannerAds