/* 文字色変更 */
#include <stdio.h>
#include <stdlib.h>
#define cls printf("\x1b[2J")
/* #defineは文字列を指定文字列に置き換える。従ってprogramでclsと書けば、それは
printf("\x1b[2J")と書いたのと同じになる。\xは16進数を意味するので、次の1bが
16進の数値として扱われる(10進数で27)。27はESC_codeで、次に [2J と続くと画面
をclearする。*/
#define color(col) printf("\x1b[%dm",col)
/* これは#defineのmacro表現。color(col)がprintf("\x1b[%dm",col)と置き換わるの
で、color(31);と書けば、\x1b[31mを表示する事になる。MS-DOSの場合、ESC_code[
の後に数値を入れて??mと続ければ文字色が変わる(数値と色の対応は、以下に示す通り)。
*/
#define RED 31
#define GREEN 32
#define BROWN 33
#define BLUE 34
#define PURPLE 35
#define SKY 36
#define WHITE 37
#define NORMAL 0
void main(void)
{
int i; char dmy[5];
system("cls");
/* systemでOSに戻り、OSが( )内の""で囲まれた命令を実行する。これを使うには、
stdlib.hが必要。clsは画面のclear命令(cls=clear screen) */
for (i=31;i<38;i++) {color(i); printf("message ");} printf("\n\n");
/* 数値で色指定するか、下の様にdefineで定義した色名を入れて指定すれば、文字色
が変えられる。*/
color(RED); printf("Red "); color(GREEN); printf("Green ");
color(BROWN); printf("Brown "); color(BLUE); printf("Blue ");
color(PURPLE); printf("Purple "); color(SKY); printf("Sky ");
color(WHITE); printf("White \n\n");
printf("Hit Enter_Key"); gets(dmy);
cls; // OSに戻らずとも、#defineでclsを定義しておけば使える。
color(PURPLE); printf("色を元に戻すには、WHITEかNORMALを指定する。\n\n");
color(NORMAL); printf("NORMAL指定で、元通り\n\n");
/* 直接printf();中の表示文字前にEsc_code[??mを書けば下の様になる。 */
printf("\x1b[34m青色文字 \x1b[m白色文字\n");
}
/* 文字色変更2 */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
/* conio(=console input output).hには、MS-DOSの文字色表示機能が定義してある。
Windows2000以降で文字を色表示するには、conio.h を取り込む。*/
void main(void)
{
system("cls");
/* systemでOSに戻り、OSが( )内の""で囲まれた命令を実行する。これを使うには、
stdlib.hが必要。clsは画面のclear命令(cls=clear screen) */
textcolor(RED); cprintf("Red "); textcolor(GREEN); cprintf("Green ");
textcolor(BROWN); cprintf("Brown "); textcolor(BLUE); cprintf("Blue ");
textcolor(MAGENTA); cprintf("Magenta "); textcolor(CYAN); cprintf("Cyan ");
textcolor(YELLOW); cprintf("Yellow "); textcolor(WHITE); cprintf("White ");
printf("\n\n");
cprintf("textcolorで色指定し、cprintfで色文字を表示する。");
printf("\n");
cprintf("cprintfとprintfでは色の濃さが違う。\n改行するにはprintfを使う");
printf("\ncprintf中で\\nを使っても、上の様に段落ちするだけ\n");
printf("\nHit Any_Key "); getch();
/* conio.h を取り込めば getch()を使える。getchar()だとEnter_Key入力まで文字
をbufferに溜めるので Enterを入れねば先に進まないが、getch()だと任意の一
文字入力を待ってprogramを次に進める事が出来る。*/
clrscr(); // conio.h を取り込めば、この命令で画面をclearできる。
// system("cls");
textcolor(YELLOW); cprintf("色指定しても、");
textcolor(MAGENTA); cprintf("printfだと");
textcolor(GREEN); cprintf("色表示はしない");
printf("\nこの行はprintfで書いているので色がつかない\n");
printf("\t普通のprintfを使えば普通色表示\n");
}