- ベストアンサー
#defineで置き換えられない
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
置き換えられています。画面をよくみるとちゃんと[2Jと表示されています。 ただし、出力している文字列はエスケープシーケンスといってかなり古いやり方です。また規格ではないので各社で互換性がありません。 だからESC[2Jを出力したら画面が消えるかどうかは使っている環境に依存します。あなたのPCがこのエスケープシーケンスに対応していなかっただけです。 エスケープシーケンスをあなたのPCが処理できるようになるかどうかは別の問題ですし、私にはわかりません。少なくともC言語の問題ではありません。 ちょっと使用しているテキストが古いと思います。
その他の回答 (2)
- cyacya2000
- ベストアンサー率54% (39/71)
回答No.3
>#defineがどうも置き換えられていないようです。 ちゃんと置き換えられてますよ。試しに、 clr(); を printf("\x1b[2J"); に置き換えても同じ結果になります。 あなたが期待している結果は何なのですか?
質問者
お礼
回答ありがとうございます。 画面クリアが出来なくて困っていたのですが、他の方の回答も見て、理解しました。 ご指摘の通り、printf("\x1b[2J");にしても全く同じ結果になりました。 他の方法で画面クリアすることにします。 ありがとうございました。
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
え? 明らかに置き換えられていますよね. そのエスケープシーケンスであなたの期待する動作ができることは確実なんですか?
質問者
お礼
回答ありがとうございます。 他の方の回答も見て、理解しました。 問題はマクロ置換じゃなくてエスケープシーケンスの方だったんですね。 もっと勉強します! ありがとうございました。
お礼
回答ありがとうございます。 エスケープシーケンスはいつでもどこでも使えるものだと思っていました。 system("cls");で画面クリアすることにします。 ありがとうございました。勉強になりました。