ページ 1 / 1
出力文字を上書きする
Posted: 2010年5月14日(金) 15:26
by しん
for(i=1; i<=100; i++)
{
printf("%d\n",i);
}
このようなソースがあったとします。
実行したら
1
2
3
4
5
と100まで表示されます。
私は
1を表示したら次に2を表示するとき
1を消して1のあった場所に2を表示する
ということがやりたいです。
使用言語はC言語(C++わからないので)で
開発環境はVC++ 2008
OSはWindows XP SP3
です。
どのようにしたらよろしいでしょうか?
ご教授お願いします。
Re:出力文字を上書きする
Posted: 2010年5月14日(金) 16:00
by Dixq (管理人)
printfの最初に
%r
を書いてみてください。
Re:出力文字を上書きする
Posted: 2010年5月14日(金) 16:09
by たかぎ
> %r
> を書いてみてください。
\rですね。
printf("\r%d", i);
とすれば、期待通りになりますが、早すぎて分からないかもしれません。
Re:出力文字を上書きする
Posted: 2010年5月14日(金) 16:20
by しん
ありがとうございます。
えーと試してみたのですが出来ないみたいです。。。
printf("\r現在%d回ループしました。",i);
このようにしたのですが、
printfの中に他の文字列が入ったらダメなのでしょうか?
Re:出力文字を上書きする
Posted: 2010年5月14日(金) 16:21
by バグ
カーソルを戻すだけなら\rでOKです。
文字を消したいならば、消したい文字数分だけバックスペースを出力するという方法が楽かな?
Re:出力文字を上書きする
Posted: 2010年5月14日(金) 16:23
by バグ
printf("現在%d回ループしました。\r",i);
こうじゃない?
Re:出力文字を上書きする
Posted: 2010年5月14日(金) 16:38
by Dixq(管理人)
な、何故%と書いたし!
すみません、訂正ありがとうございます^^;
後、windowsならclsだったか何かで全消しも出来ますよね。
Re:出力文字を上書きする
Posted: 2010年5月14日(金) 16:38
by たかぎ
> printfの中に他の文字列が入ったらダメなのでしょうか?
字数が増える方向に変化するなら問題ないはずです。
どうダメだったのかを補足してください。
Re:出力文字を上書きする
Posted: 2010年5月14日(金) 16:39
by たかぎ
> 文字を消したいならば、消したい文字数分だけバックスペースを出力するという方法が楽かな?
\bを出力しても、カーソル位置を変化させるだけですね。
Re:出力文字を上書きする
Posted: 2010年5月14日(金) 16:40
by しん
>バグさん
ありがとうございます。
printf("現在%d回ループしました。\r",i);
これで期待通りの結果になりました^^
Re:出力文字を上書きする
Posted: 2010年5月14日(金) 16:52
by バグ
>>\bを出力しても、カーソル位置を変化させるだけですね。
うわ!!失礼しました。
文字数分だけバックスペースを出力して、同じ回数だけスペースで上書きしないと駄目でした…m(_ _)m
たかぎさん、指摘ありがとうございました。