• ベストアンサー

ANSIエスケープシーケンスの色表示

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; } 結果は 黄色です  と表示されました。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

シェルは関係ありません。そのシェルを動作させているコマンドラインの画面が、何か、です。 たしか、標準ではコマンドプロンプト(cmd.exe)と同じ端末になったはずです。 rxvtやminttyのようなANSIシーケンス対応の端末で動作させる必要があります やり方は 「MinGW mintty」あたりで検索してください。

dqk10254
質問者

お礼

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

dqk10254
質問者

補足

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

その他の回答 (3)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.4

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

dqk10254
質問者

お礼

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

dqk10254
質問者

補足

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

  • umamimi
  • ベストアンサー率39% (144/362)
回答No.2

No.1 さん回答の焼き直し程度ですが。 実行環境は何で、それがANSIエスケープシーケンスに対応してるのか、が肝心です。 未対応環境だとシーケンス文字列がそのまま表示されるだけだったりします。 あげあし取っちゃうと >MinGWのgccで以下のC言語のプログラムをコンパイルしたところ、色が表示されませんでした。 コンパイルしただけで色が表示されるわけないしあたりまえ とも言えちゃうので質問文は「ちゃんと」書きましょう。

dqk10254
質問者

お礼

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

dqk10254
質問者

補足

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

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

使用している端末は? コマンドプロンプトはANSIシーケンスに対応してなかったはず。

dqk10254
質問者

お礼

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

dqk10254
質問者

補足

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

関連するQ&A