みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

投稿日時 - 2013-01-07 20:40:35

QNo.7880565

困ってます

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

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

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

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

投稿日時 - 2013-01-08 00:06:49

補足

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

投稿日時 - 2013-01-08 19:00:48

お礼

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

投稿日時 - 2013-01-08 18:55:04

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

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

投稿日時 - 2013-01-08 01:05:18

補足

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

投稿日時 - 2013-01-08 19:04:32

お礼

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

投稿日時 - 2013-01-08 19:01:49

ANo.2

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

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

あげあし取っちゃうと

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

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

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

投稿日時 - 2013-01-07 21:20:58

補足

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

投稿日時 - 2013-01-07 23:29:17

お礼

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

投稿日時 - 2013-01-07 23:42:06

ANo.1

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

投稿日時 - 2013-01-07 20:54:42

補足

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

投稿日時 - 2013-01-07 23:39:26

お礼

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

投稿日時 - 2013-01-07 23:40:47

あなたにオススメの質問