8

現在の時刻を(を使用してprintf)同じ場所に出力したいのですが、無限ループで実行したいです。

while(1) {printf("Date and Time are %s", asctime(localtime(&current))); } 

したがって、使用する前にprintf、カーソルを開始位置に戻す必要があります。どうやってそれをするのですか?

4

3 に答える 3

12

単にカーソルを現在の行の先頭に移動するには、"\r" と出力するだけで済みます。古いテキストは消去されないことに注意してください。そのため、上書きするか、ANSI コードで消去するように注意してください。

ANSI/VT 制御コードを使用するシステムでは、"\033[1;2H" を出力してカーソルを配置できます。カーソルを移動し、画面に何も印刷しません。値 1 と 2 は行と列なので、異なる位置を使用するように変更します。

色などの他のコードもあります: http://bluesock.org/~willg/dev/ansi.html

これらのコードはいずれも移植性がなく、すべてのシステムで機能するとは限らないことに注意してください (特に、一部の Microsoft システムではデフォルトで機能しません)。サポートされていないシステムでは、代わりに画面にガベージ (コード自体) が表示されます。

于 2010-03-05T13:19:39.490 に答える
8

\r を書きます

while(1) {
 printf("\rDate and Time are %s      ", asctime(localtime(&current)) );
 fflush(stdout);
}
于 2010-03-05T13:17:00.393 に答える
0

行頭に「\r」を出力するとうまくいくかもしれません。

于 2010-03-05T13:16:44.440 に答える