出力文字を上書きする

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
しん

出力文字を上書きする

#1

投稿記事 by しん » 15年前

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
です。

どのようにしたらよろしいでしょうか?
ご教授お願いします。

Dixq (管理人)

Re:出力文字を上書きする

#2

投稿記事 by Dixq (管理人) » 15年前

printfの最初に

%r

を書いてみてください。

たかぎ

Re:出力文字を上書きする

#3

投稿記事 by たかぎ » 15年前

> %r
> を書いてみてください。

\rですね。

printf("\r%d", i);

とすれば、期待通りになりますが、早すぎて分からないかもしれません。

しん

Re:出力文字を上書きする

#4

投稿記事 by しん » 15年前

ありがとうございます。
えーと試してみたのですが出来ないみたいです。。。


printf("\r現在%d回ループしました。",i);

このようにしたのですが、
printfの中に他の文字列が入ったらダメなのでしょうか?

バグ

Re:出力文字を上書きする

#5

投稿記事 by バグ » 15年前

カーソルを戻すだけなら\rでOKです。
文字を消したいならば、消したい文字数分だけバックスペースを出力するという方法が楽かな?

バグ

Re:出力文字を上書きする

#6

投稿記事 by バグ » 15年前

printf("現在%d回ループしました。\r",i);

こうじゃない?

Dixq(管理人)

Re:出力文字を上書きする

#7

投稿記事 by Dixq(管理人) » 15年前

な、何故%と書いたし!

すみません、訂正ありがとうございます^^;

後、windowsならclsだったか何かで全消しも出来ますよね。

たかぎ

Re:出力文字を上書きする

#8

投稿記事 by たかぎ » 15年前

> printfの中に他の文字列が入ったらダメなのでしょうか?

字数が増える方向に変化するなら問題ないはずです。
どうダメだったのかを補足してください。

たかぎ

Re:出力文字を上書きする

#9

投稿記事 by たかぎ » 15年前

> 文字を消したいならば、消したい文字数分だけバックスペースを出力するという方法が楽かな?

\bを出力しても、カーソル位置を変化させるだけですね。

しん

Re:出力文字を上書きする

#10

投稿記事 by しん » 15年前

>バグさん
ありがとうございます。
printf("現在%d回ループしました。\r",i);
これで期待通りの結果になりました^^

バグ

Re:出力文字を上書きする

#11

投稿記事 by バグ » 15年前

>>\bを出力しても、カーソル位置を変化させるだけですね。

うわ!!失礼しました。
文字数分だけバックスペースを出力して、同じ回数だけスペースで上書きしないと駄目でした…m(_ _)m
たかぎさん、指摘ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る