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

 DOS用のC言語プログラムを作っています。そこで
printf関数などで文字列を表示した後表示した文字列の
間に違う文字列を挿入したりしたいのですがそんなことは
可能でしょうか?

#include <stdio.h>
int main(void){
printf("13456789");
printf("2");
return 0;
}
というプログラムを作ったとして1と3の間に割り込んで2と
入れたい場合どうしたらよいでしょうか?
開発環境はwindowsXPでコンパイワはBorlandです。

A 回答 (3件)

#1の方の手順が使えるのは、本当にMS-DOS互換のプログラムだけです。


Borlandのコンパイラが、実は往年のTurboC++だとか言わない限り、WinXPではエスケープシーケンスは使えません。
Borland C++ 5.5等を使われているのであれば、それはコンソールアプリであって、DOSアプリとは中身が違います。
(見た目や書き方は大差ないですが)

→Win32APIを呼ぶのが定石でしょうか。
SetConsoleCursorPosition等を調べてみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/20 09:11

例えば、結果的(見た目)に目的の方法を達成したいのであれば、


printf("13456789");
printf("\r"); //カーソルを先頭へ
printf("123456789");

で、そんな風にはなります。。。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/20 09:07

エスケープシーケンスというものを使用すれば可能です。



NECのMS-DOSの時は結構使っていました。
Windowsになってから、全く同じ使い方は出来なくなったようなので、下記URLを参考にしてみてください。
http://kasai86.ld.infoseek.co.jp/dos/esc.htm
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/20 09:09

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