プロが教える店舗&オフィスのセキュリティ対策術

MinGWのgccで以下のC言語のプログラムをコンパイルしたところ、色が表示されませんでした。私の環境(Windows xp sp3で32bitCPU,MinGWは最新版のmingw-get-inst-20120426)では、無理でしょうか。何かgccのオプションで対応できればと思い、お尋ねします。
#include <stdio.h>

int main()
{
puts("\x1b[0;1;33m黄色です");
puts("\x1b[0m");

return 0;
}
結果は
[0;1;33m黄色です
[0m
と表示されました。

A 回答 (4件)

シェルは関係ありません。

そのシェルを動作させているコマンドラインの画面が、何か、です。

たしか、標準ではコマンドプロンプト(cmd.exe)と同じ端末になったはずです。
rxvtやminttyのようなANSIシーケンス対応の端末で動作させる必要があります

やり方は 「MinGW mintty」あたりで検索してください。

この回答への補足

ご指摘のとおり、「MinGW mintty」で検索しminttyをインストールし端末エミュレータとして使用したところ、うまく黄色の文字が表示されました。ありがとうございます。コマンドプロンプトと端末エミュレータのことをもう少し勉強したいと思います。

補足日時:2013/01/08 19:00
    • good
    • 0
この回答へのお礼

続けてアドバイスいただき感謝します。

お礼日時:2013/01/08 18:55

ANSIエスケープシーケンスなどを解釈するのは端末(ダム端末といってもおそらく知らないでしょうからputtyやteratermなどの端末ソフトといったらわかります?)です。


コマンドプロンプトはANSIエスケープシーケンスを解釈できません。

この回答への補足

ANSIエスケープシーケンスに対応する端末エミュレータについての知識がほとんどないので、コマンドプロンプトと端末エミュレータのことをもう少し勉強したいと思います。

補足日時:2013/01/08 19:04
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2013/01/08 19:01

No.1 さん回答の焼き直し程度ですが。



実行環境は何で、それがANSIエスケープシーケンスに対応してるのか、が肝心です。
未対応環境だとシーケンス文字列がそのまま表示されるだけだったりします。

あげあし取っちゃうと

>MinGWのgccで以下のC言語のプログラムをコンパイルしたところ、色が表示されませんでした。

コンパイルしただけで色が表示されるわけないしあたりまえ

とも言えちゃうので質問文は「ちゃんと」書きましょう。

この回答への補足

ご解答ありがとうございます。質問文があいまいでした。コンパイルし、実行しましたと書くべきところでした。申し訳ありません。未対応環境が自分の上記で述べた環境のことなのかは自分では分かりません。

補足日時:2013/01/07 23:29
    • good
    • 0
この回答へのお礼

早々とご回答ありがとうございます。またあいまいな表現を指摘していただき感謝します。

お礼日時:2013/01/07 23:42

使用している端末は?


コマンドプロンプトはANSIシーケンスに対応してなかったはず。

この回答への補足

ご回答ありがとうございます。端末は、NEC PC-gv30hcz58でモニターは三菱のrdt195LMです。実行は、MinGWのShellで行っていますが、これもWindowsのコマンドプロンプトと同じ扱いになりますか。

補足日時:2013/01/07 23:39
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

お礼日時:2013/01/07 23:40

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