アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語でDOSプログラムを作っているのですが、
文字の色を変えることはできるのでしょうか?

#include <stdio.h>
void main(){
printf("あいうえお");
}

コンパイラはボーランドで、DOSはXPのものとし、
文字を赤くするとしたら上の例ならどのように
書けばよいのでしょう?

A 回答 (2件)

文字をカラーで表示するには


ヘッダファイル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;
}
    • good
    • 2
この回答へのお礼

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

お礼日時:2006/04/21 06:18

こんにちは。



昔はエスケープシーケンスを利用してやっていたものですが…。

#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;
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/04/21 06:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!