• ベストアンサー

DOSの文字の色を変える方法。

C言語でDOSプログラムを作っているのですが、 文字の色を変えることはできるのでしょうか? #include <stdio.h> void main(){ printf("あいうえお"); } コンパイラはボーランドで、DOSはXPのものとし、 文字を赤くするとしたら上の例ならどのように 書けばよいのでしょう?

質問者が選んだベストアンサー

  • ベストアンサー
  • BPG
  • ベストアンサー率66% (10/15)
回答No.1

文字をカラーで表示するには ヘッダファイルconio.hで定義されているtextattr()を使います。 なのでconio.hをインクルードする必要があります。 色は0~15の整数値や記号で指定します。 0=BLACK 1=BLUE 2=GREEN など。 以上をふまえると以下のようなソースになります (緑色で表示します) 文字をカラーで表示する方法はコンパイラによって違うと聞くので試してみてください。 文字をカラーで表示するには ヘッダファイルconio.hで定義されているtextattr()を使います。 なのでconio.hをインクルードする必要があります。 色は0~15の整数値や記号で指定します。 0=BLACK 1=BLUE 2=GREEN 3=CYAN 4=RED 5=MAGENTA 6=BROWN 7=LIGHTGRAY など。 以上をふまえると以下のようなソースになります (緑色で表示します) 文字をカラーで表示する方法はコンパイラによって違うと聞くので試してみてください… #include<stdio.h> #include<conio.h> int main(){ textattr(2); textattr(GREEN); cprintf("あいうえお"); return 0; }

amazontester
質問者

お礼

大変わかりやすい説明をありがとうございます。 このやり方ならすぐに理解できました。 お陰でものすごく助かりました!!

その他の回答 (1)

回答No.2

こんにちは。 昔はエスケープシーケンスを利用してやっていたものですが…。 #1の方がおっしゃる方法が簡単で良いですが、以下のようなやり方もあります。ただし、Windows の DOS 窓で実行する場合に有効な手段です。 SetScreenTextAtrribute 関数を上手く使うと、テキストの背景色なども変更できます。 #include <windows.h> #include <stdio.h> #include <conio.h> int main(void) { HANDLE h; CONSOLE_SCREEN_BUFFER_INFO csbi; h = GetStdHandle(STD_OUTPUT_HANDLE); // 標準入出力へのハンドルを得る GetConsoleScreenBufferInfo(h, &csbi); // コンソールスクリーンバッファ(現在の状態)を得る SetConsoleTextAttribute(h, FOREGROUND_RED); // 文字色を赤に変更 printf("あいうえお\n"); return 0; }

amazontester
質問者

お礼

すばらしいです! ありがとうございます。 昔は確かにエスケープシーケンスで簡単にできてたみたいですね。今はもう出来ないのかと思ってました。 感謝します!。

関連するQ&A