- ベストアンサー
経過時間を表示させたい(C言語)
今以下のようなプログラムを作っています。問題の部分だけ載せておきます。 ・ ・ ・ a=0; b=0; time(&t1); for(○;△;□){ X番目の素数を表示させるアルゴリズム; time(&t2); b=t2-t1; if(a<b){ a=b; printf("%d秒経過...\n",a); } ・ ・ ・ これですと経過時間は 1秒経過... 2秒経過... 3秒経過... ・ ・ ・ と表示されるのですが、僕が目指しているのは、例えば、2秒経過したら「2秒経過...」という表示を「1秒経過...」を消してそのところに表示させたいのです。 つまり、まるで秒数の部分だけ変化しているように見せたいのです。 もし、やり方が分かる方がいましたら教えていただけると嬉しいです。ぜひともよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
すいませんリンク先ちがってました。 http://www.kumei.ne.jp/c_lang/intro/no_59.htm
その他の回答 (4)
- JaritenCat
- ベストアンサー率37% (122/322)
Windows環境であればコンソールAPI使うとか。。 http://www.kumei.ne.jp/c_lang/intro/no_58.htm
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
困ったッスね。 環境は、なんですか。 XPのDOSプロンプトではうまくいくんですけどねぇ~。 じゃ、次は、コレを試してみて下さい。 printf("\b\b\b\b\b\b\b\b\b\b\b\b\b"); printf("%d秒経過...",a);
以下のように、system()関数を使ってみるとか。 system("cls"); printf("%d秒経過...\n",a); 全部消えてしまうけど…
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
とりあえず printf("%d秒経過...\r",a); としてみて下さい。 これで、ダメなら、エスケープシーケンスを使うとか
補足
ご回答ありがとうございます。 一応やってみましたがダメでした。 そこで「エスケープシーケンスを使ったみては」ということだったので、「printf("%d秒経過...",a);」の前に「printf("\x1b[2K");」に入れてみましたがダメでした。 ちなみに後にも置いてみましたがダメでした。 なにか良い方法がありましたら教えてもらってもいいでしょうか?