1

次のプログラムが # の約 10 行を出力する状況を考えてみましょう。

for(i=0;i<10;i++)
prinf("\n#");

5 行目に戻ってその # を編集し、画面をクリアしたり以下の 5 行をクリアしたりせずに色を変更するにはどうすればよいですか?

私が試してみました

window(5,0,20,20);
textcolor(GREEN);
cprintf("#");

しかし、それは編集ではなく、元のものの横に印刷されています.なぜですか?

それを行い、すでに印刷されたテキストの色を動的に変更する他の方法はありますか? 私を助けてください..私の環境はWindowsのターボCです

4

4 に答える 4

3

printf と別の出力ライブラリを混在させているようです - これはお勧めできません。Printf は文字端末に送信されることを想定していますが、問題の出力ライブラリは、排他的アクセスを持っていると誤って想定する可能性があります (そして、誤動作する可能性があります)。

1 つの関数に基づいて、conio.h を使用している可能性があります。ドキュメントはここにあります。目次には、使用可能な各機能が示されています。そのインデックスから、関数をすぐに見つけることができるはずです。

ウィンドウ関数は、カーソルがテキストを変更する可能性のある領域を設定するだけであるため、目的の機能を実行しません。カーソルは移動しません。他のライブラリ関数を使用する必要があります。

于 2008-11-05T06:42:30.380 に答える
1

-1: 宿題の質問を投稿するためのヒント:

1) 問題を正しく解こう!投稿されたコードは、説明にあるように機能しません。

 for(i=0;i<10;i++)
    prinf("#");

#これにより、行末文字がないため、1 行に10文字が出力されます。元の説明では、「10 行の印刷」について述べています。

2) 必要な詳細を記入してください: どの環境を使用していますか: Windows? Linux? 何のコンパイラ?これはウィンドウ化された環境ですか、それともテキストベースの環境ですか?

3) 投稿前の STFW。「ANSI エスケープ シーケンス」または「カーソルの配置」を探します。

于 2008-11-05T05:14:12.617 に答える
1

ウィンドウ関数は、通常、最初の 2 つの座標ピクセルから、つまり (5,0) の例では、次の 2 つの座標が指すピクセルまでウィンドウを作成します。だからあなたのプログラムはうまくいくはずです

試してみるか、 gotoxy() を使用してください

于 2008-11-12T08:52:41.423 に答える
0

多分-

cprintf("\b#");

「b」はバックスペース用です

于 2008-11-05T04:52:33.830 に答える