OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

\x1bが働きません。

  • 困ってます
  • 質問No.131188
  • 閲覧数786
  • ありがとう数3
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 59% (101/170)

\x1bが働きません。

すみません。C言語初心者でよくわかりません。
コンパイラはフリーのBorland C++ Compiler 5.5を使用してます。
OSはWindows98です。

記述は下記のとおりですが、
------------------------------------------------------
#include <stdio.h>
#include <conio.h>
void main(void);
void main(void)
{
  int i;
  printf("clear\x1b[2J\n");
  for(i=30;i<=37;i++){
    printf("\x1b[%dmcolor\n",i);
  }
  getch();
}
------------------------------------------------------

DOS窓の実行画面はこのとおり。全部白文字で出力されます。
------------------------------------------------------
clear←[2J
←[30mcolor
←[31mcolor
←[32mcolor
←[33mcolor
←[34mcolor
←[35mcolor
←[36mcolor
←[37mcolor
(getchの入力待ち)
------------------------------------------------------
実際は←の所はEnterキーに印刷されているカギ状の矢印です。
\x1bが改行マーク?に置きかえられているのです。
どなたかアドバイスお願いします。

ちなみにDOS窓の時に\が「む」キーを押さないと入力できませんが
何か関係がありますか?
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4
レベル11

ベストアンサー率 58% (114/195)

申し訳ない、adddevではなくてadddrvでした(^^;

それで組み込み方ですが、Windows95/98(se含む)であればWindowsのインストールされているドライブの一番上(普通はC:\です)にある、config.sysを編集します。

メモ帳などで開き、適当な個所に

DEVICE=C:\WINDOWS\COMMAND\ANSI.SYS

と記述します(C:\WINDOWS...の部分はそちらのシステムのANSI.SYSの場所を指定してください)。

NTや2000などの起動時にデバイスドライバをロードする機構を持たないものの場合は、adddrvを使います。ロードするデバイスをconfig.sysと同様に記述し

adddrv [ロードするデバイスを記述したファイル名]

として実行すればロードされるはずです。

ドライバがロードされたかどうかは

MEM /D

で確認できたはずです(このへん自信ないです。当時はサードパーティ製の別コマンド使っていたので)

# 以下 駄文です
・・・さすがに最近はこのへんの事も必要なくなったせいで情報も見つかりにくくなってるようです。MS-DOS全盛の頃は知ってて当然に近い事だったのですが・・・
要するにMS-DOS時代の知識ですので、大きな書店に行ってMS-DOS系の本を探せばこのへんの事について詳しく載っています。
また、adddrvの方は設定ファイルいらずのものがVectorにあったはず・・・なんですがX68000版は検索でヒットするけど、MS-DOS版は見当たらず・・・なくなったようです・・・
とおもったらadddevという同等コマンドがあった模様。参考URLにあります。これを使えば設定ファイル無しで読み込む事が出きるようです。
お礼コメント
vide

お礼率 59% (101/170)

詳しい説明ありがとうございました。
さっそくWin98の例をとってconfig.sysを編集してみました。

はじめ何も変わらなかったので、あれ?と思ったのですが
「あっ再起動してない」と思って再起動したら
バッチリの実行結果が表示されました。

1人ではとても解決できなかったでしょう。
本当にありがとうございました。
投稿日時 - 2001-09-10 13:20:41
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル9

ベストアンサー率 15% (18/120)

すみません。私の日本語能力が低いので videさんが何を言わんとしているかがわからないのですが 改行をしたいのですか? 改行は \n と入力してください。 そうではなく、 \x1b と実行画面で表示させたいのなら、 \\x1b と\を2回続けて入力してください。 ...続きを読む
すみません。私の日本語能力が低いので
videさんが何を言わんとしているかがわからないのですが
改行をしたいのですか?

改行は
\n
と入力してください。

そうではなく、
\x1b
と実行画面で表示させたいのなら、
\\x1b
と\を2回続けて入力してください。
補足コメント
vide

お礼率 59% (101/170)

簡単に言うと私の狙いとしては、

printf("\x1b[2J"); /* 画面をクリアする */
printf("\x1b35mピンク"); /* "ピンク"という文字をピンク色で表示する */

なので期待する実行画面は
------------------------------------
ピンク(←ピンク色で)

------------------------------------
とやりたいのですが
現状ですと
------------------------------------
←[2J←[35mピンク(←白色で)

------------------------------------
となってしまい期待通りの実行結果が得られないので
どなたか良きアドバイスを!!ということです。
投稿日時 - 2001-09-08 11:18:41
  • 回答No.2
レベル10

ベストアンサー率 42% (66/154)

エスケープシーケンスを使って画面を消したり、色を変えようと なさっていると思いますが、DOSプロンプトでは出来なかった ような気がします。MS-DOSとかPC-DOSでは使えますが・・・ あと、「む」で「¥」が表示されるのは、お使いのキーボードを Windowsが英語版のキーボードと認識している、と思われます。 ...続きを読む
エスケープシーケンスを使って画面を消したり、色を変えようと
なさっていると思いますが、DOSプロンプトでは出来なかった
ような気がします。MS-DOSとかPC-DOSでは使えますが・・・

あと、「む」で「¥」が表示されるのは、お使いのキーボードを
Windowsが英語版のキーボードと認識している、と思われます。
お礼コメント
vide

お礼率 59% (101/170)

そうそうエスケープシーケンス(制御文字)とかいうやつです。
有力な情報ありがとうございます。

しかし私にはさらなる疑問が…
PC-DOSってはじめて聞きました。これって何ですか?

あとWindows上ではキーボードは正常に動作してますが、
DOS窓とWin終了後のMS-DOSモードどちらともキーボードの認識が
おっしゃるように誤認しているようです。
DOS上のキーボードの認識を改める方法ってあるんでしょうか?
投稿日時 - 2001-09-08 12:40:30
  • 回答No.3
レベル11

ベストアンサー率 58% (114/195)

たしかescape sequenceを通すためにansi.sysをロードしてやる必要があったと思います。 adddevコマンドでansi.sysをロードするか、config.sysでansi.sysを組み込んでから実行してみてください。 ...続きを読む
たしかescape sequenceを通すためにansi.sysをロードしてやる必要があったと思います。
adddevコマンドでansi.sysをロードするか、config.sysでansi.sysを組み込んでから実行してみてください。
お礼コメント
vide

お礼率 59% (101/170)

ええと、なんか私の求めていた答えがここにある!と言う感じがしてます。
ありがたいです。

でも、言ってることが私には難しいです。
調べて見ましたらansi.sysっていうファイルはマシンの中に2つ、
config.sysというのは4つありました。必要なファイルは手元に
あるという事でしょうか?

「adddevコマンドでロードする」「config.sysで組み込んでから」
…すみません。意味がわかりません。
何をしたら良いのでしょう?

---------------------------------------------------------
p.s.
回答No.1に対する補足の中の3行目、
printf("\x1b35mピンク"); は、
printf("\x1b[35mピンク"); の誤りです。
million-showさん、失礼いたしました。
投稿日時 - 2001-09-08 13:17:03
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ