my Top page便利な大福帳ドジ話の目次前のドジ話次のドジ話

C program でカラー表示が出来た!

  1998年4月12日(日)

# 久しぶりに、愛機(dora)をいじっています。何日振りだろうか。

  先日、DOSfileを読めたり取り込めたり出来ましたが、Cプログラミングファイル
のコンパイルが出来ないでいました。エディターで調べたら、変なコード「^M」
が文末に入っていました。UNIXとDOSでは改行の仕方が違うので、その部分が文字
として現れたのだと思います。dosの改行コードは「CR」+「LF」(キャりッジ・
リターン+ライン・フィード)なんですね。UNIXの場合は「LF」(ライン・フィ
ード)だけで改行出来ますから、余計な「CR」の部分が文字「^M」として認識さ
れてしまうようです。
  それならば、この部分を削除したら上手くいくかもしれないと思って試してみ
ました。
  修正 ---> コンパイル --->試しに実行 ---> OKでした。

以外と変換は出来るものなんですね。これならどんどん取り込んで利用できます。

  で、早速カラー表示させることに挑戦してみました。以前(といっても1年位前)
M$-DOSでCプログラムを書いて画面にカラー表示させたことはありますけど、
UNIXではどうなのかは全く判りませんでした。
が、カラー表示はOSの領域では無くハード仕様に基ずくものじゃなかろうか?とい
う憶測を持ちました。つまり、PCであれば、OSがM$-DOSであろうがUNIXであろうが
カラー表示のコードはおそらく同じであろうと思った次第です。

# これは私の無知のなせる事で、後で「違っている」と指摘されました。
# けど、何?がどう違うかは私には判りません。
# 無知ほど恐いものはないの見本が次です。(^ ^;;

  カラー表示のプログラムをM$-DOSからコピーして修正し、コンパイルして、実行
させました。

% gcc unixcolor.c
% ./a.out

出たーーー!! ちゃんと色が出たあ!!  v(^0^)v

みごと、意図したとうりのカラー表示で文字を表せました。

これで「Cプログラミング」の幅がグーッと広がりました。万万歳!です。

モード関係も次はやってみたいと思います。
今日は、とりあえず結果報告まで。

最終的には、下のように、

    ・背景のカラー表示
    ・背景カラー表示で文字のカラー表示

までできました。

------------------ C program -------------------------------------------
/* unixcolor.c */
#include <stdio.h>
main()
{
                printf("\33[31m");	/* color:31--->Red */
		printf("Red\n");
                printf("\33[32m");      /* color:32--->Green */
		printf("Green\n");
                printf("\33[33m");      /* color:33--->Yellow */
		printf("Yellow\n");
                printf("\33[34m");      /* color:34--->Blue */
		printf("Blue\n");
                printf("\33[35m");      /* color:35--->Mazenta */
		printf("Mazenta\n");
                printf("\33[36m");      /* color:36--->Light Blue */
		printf("light Blue\n");
                printf("\33[37m");      /* color:37--->White */
		printf("White\n");
                printf("\33[m");        /* color:0--->Default */
		printf("Default\n");

                printf("\33[41m");	/* color:41--->Red */
		printf("Red\n");
                printf("\33[42m");      /* color:42--->Green */
		printf("Green\n");
                printf("\33[43m");      /* color:43--->Yellow */
		printf("Yellow\n");
                printf("\33[44m");      /* color:44--->Blue */
		printf("Blue\n");
                printf("\33[45m");      /* color:45--->Mazenta */
		printf("Mazenta\n");
                printf("\33[46m");      /* color:46--->Light Blue */
		printf("light Blue\n");
                printf("\33[47m");      /* color:47--->White */
		printf("White\n");
                printf("\33[m");        /* color:0--->Default */
		printf("Default\n");

                printf("\33[47m");      /* color:47--->White */
                printf("\33[31m");	/* color:31--->Red */
		printf("Red\n");
                printf("\33[43m");      /* color:43--->Yellow */
                printf("\33[32m");      /* color:32--->Green */
		printf("Green\n");
                printf("\33[46m");      /* color:46--->Light Blue */
                printf("\33[33m");      /* color:33--->Yellow */
		printf("Yellow\n");
                printf("\33[41m");	/* color:41--->Red */
                printf("\33[34m");      /* color:34--->Blue */
		printf("Blue\n");
                printf("\33[42m");      /* color:42--->Green */
                printf("\33[35m");      /* color:35--->Mazenta */
		printf("Mazenta\n");
                printf("\33[45m");      /* color:45--->Mazenta */
                printf("\33[36m");      /* color:36--->Light Blue */
		printf("light Blue\n");
                printf("\33[42m");      /* color:42--->Green */
                printf("\33[37m");      /* color:37--->White */
		printf("White\n");
                printf("\33[m");        /* color:0--->Default */
		printf("Default\n");
}

(注)実際のコードでは、「¥」は「バックシュラッシュ」で書いています。

--------------------結果 ( Kterm 上での)------------------------------------
% ./a.out
Red
Green
Yellow
Blue
Mazenta
light Blue
White
Default
判りやすいように開けました
Red
Green
Yellow
Blue
Mazenta
light Blue
White
Default
判りやすいように開けました
Red
Green
Yellow
Blue
Mazenta
light Blue
White
Default
%
-------------------------- end ---------------------------------------------

ちなみに、UNIXの場合は、コンソール画面上でも、X Window System上でもカラー
表示させることが出来ました。「Default」の部分の表示は、少し違います。
コンソール上では白(背景は黒)、X Window System上では黒(背景は白です)
になります。背景は、コンソール上では文字部分を外れた行全体に前設定の色が流れます。
MS-DOSはコンソールでしか確認出来ていません。

my Top page便利な大福帳ドジ話の目次前のドジ話次のドジ話