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

いま、C言語でごく単純なゲームをテーマにGUIで勉強しています。
それで、while分などループ文で毎度「○○入力してください」とか「○○でした」などと入力する度に表示されると非常にうざいです。1ターンごとに画面をクリアするいい方法ないでしょうか?おしえてください。

A 回答 (3件)

 OS が何かも「コンソール」ソフトが何かも不明なので、勝手に Windows だと仮定して回答します。



No.1 の回答にある「ESC[2J を printf する」方法は、ansi.sys をロードした「MS-DOS プロンプト」でないとうまく行きません。手元に Windows XP しかなくて、Windows 9x 系がどうなっているか確認できないのですが、Windows XP では、次のようにします。

    C:\WINDOWS\SYSTEM32\CONFIG.NT の最後に次の二行を加える。

      device=%SystemRoot%\system32\ansi.sys
      dosonly

    コマンドプロンプト(cmd.exe)ではなく、MS-DOS プロンプト(command.com) を起
    動。このコンソールは、ESC[2J でクリアできます。

 ただし、このコンソールでは MS-DOS 用に作成されたものしか実行できません。今、勉強のために作成しているソフトは実行できないかも知れません。

 コマンドプロンプトでも有効な方法は二つあって、簡単なほうは、

    #include <stdlib.h>
    ....
    ....
    system("cls");
    ....

という風にします。もうひとつの方法はコードが長いので、以下の URL を参照してください。

 もし、Linux などの UNIX 系 OS の話だったら、方法が違うので、回答への補足でお知らせください。

参考URL:http://msdn.microsoft.com/library/default.asp?ur …
    • good
    • 0
この回答へのお礼

自分でも探していたら方法がみつかりました。
system("cls")すればOKなんです。
ただしこれはWindowsでのはなし。
UNIXなら別のコマンドを入れなくてはならないとわかりました。
ありがとうございます。

お礼日時:2005/09/19 12:04

お使いの「コンソール」が何かによってそのコンソールを操作する方法も違ってきます。



お使いの「コンソール」は何ですか。
    • good
    • 0

コンソールのクリアであれば、エスケープシーケンスでクリアを表示してやればokです。


以下をprintfで表示してください。ESCはx1bです。
ESC[2J
    • good
    • 0

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