/* 文字色変更 */ #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"); }