2

コンソールに出力する乱数を生成しようとしています。LinuxでCでプログラミングしています。各数字に対して 1 秒の時間間隔の後、すべての数字を 1 か所に出力したかったのです。「時間間隔」を停止するため
に使用しています。sleep()試してみましたが\b\r何も機能しません。たとえば
、これを実行したかっただけです:

for (i = 0; i < 10; i++) {
    printf("%d", i);
    sleep(1);
    printf("\b");
}
4

2 に答える 2

6

stdout はおそらくバッファリングされているため、フラッシュします。

for(i=0;i<10;i++)
 {
   printf("%d",i);
   fflush(stdout);
   sleep(1);
   printf("\b");
 }
于 2011-02-20T11:52:27.357 に答える
5

最も簡単な答えは、おそらくncursesを使用することです:

#include <ncurses.h>

int main()
{   
    int i;

    initscr(); /* Start curses mode */

    for (i=0;i<10;i++) {
            mvprintw(0,0, "%d", i); /* coords 0,0 */
            refresh(); /* Update screen */
            sleep(1);
    }

    getch(); /* Wait for user input */
    endwin(); /* End curses mode */

    return 0;
}

でコンパイルしgcc -o counter counter.c -lncursesます。

于 2011-02-20T10:18:44.057 に答える