「C言語練習」 おまけ   ・前へ
/* 文字色変更 */
#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"); }

(前に戻る)