• ベストアンサー

DOS画面でテキストカーソルの位置を移動する(C言語)

 DOS用のC言語プログラムを作っています。そこで printf関数などで文字列を表示した後表示した文字列の 間に違う文字列を挿入したりしたいのですがそんなことは 可能でしょうか? #include <stdio.h> int main(void){ printf("13456789"); printf("2"); return 0; } というプログラムを作ったとして1と3の間に割り込んで2と 入れたい場合どうしたらよいでしょうか? 開発環境はwindowsXPでコンパイワはBorlandです。

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

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.2

#1の方の手順が使えるのは、本当にMS-DOS互換のプログラムだけです。 Borlandのコンパイラが、実は往年のTurboC++だとか言わない限り、WinXPではエスケープシーケンスは使えません。 Borland C++ 5.5等を使われているのであれば、それはコンソールアプリであって、DOSアプリとは中身が違います。 (見た目や書き方は大差ないですが) →Win32APIを呼ぶのが定石でしょうか。 SetConsoleCursorPosition等を調べてみてください。

amazontester
質問者

お礼

なるほど。移植性を考えるとWinAPIを使うがベストのようですね。私のスキルでは難しそうですが勉強してみます。ありがとうございました。

その他の回答 (2)

  • goku3
  • ベストアンサー率35% (15/42)
回答No.3

例えば、結果的(見た目)に目的の方法を達成したいのであれば、 printf("13456789"); printf("\r"); //カーソルを先頭へ printf("123456789"); で、そんな風にはなります。。。

amazontester
質問者

お礼

見た目的にやるのでは無くて本質的にやりたいのですが・・とにかく回答ありがとうございます。

  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.1

エスケープシーケンスというものを使用すれば可能です。 NECのMS-DOSの時は結構使っていました。 Windowsになってから、全く同じ使い方は出来なくなったようなので、下記URLを参考にしてみてください。 http://kasai86.ld.infoseek.co.jp/dos/esc.htm

amazontester
質問者

お礼

こういうやり方もあるんですね。勉強になりました。ただ移植性を考えると使いにくい手法かもしれません。

関連するQ&A

専門家に質問してみよう