ANSI C是否允许在固定时间段后在同一位置打印每个字符?

Jeh*_*uah 2 c c89

我试图生成随机数字在控制台上打印.我在Linux上用C编程.我希望在每个数字的一​​秒钟的时间间隔之后在一个地方打印所有数字.我正在使用sleep()来停止'时间间隔'.我尝试了\ b,\ r \n以及所有但都没有效果.我只想让它运行,

for (i = 0; i < 10; i++) {
    printf("%d", i);
    sleep(1);
    printf("\b");
}
Run Code Online (Sandbox Code Playgroud)

我很绝望,请帮忙!

nos*_*nos 6

stdout可能是缓冲的,所以要冲洗它.

for(i=0;i<10;i++)
 {
   printf("%d",i);
   fflush(stdout);
   sleep(1);
   printf("\b");
 }
Run Code Online (Sandbox Code Playgroud)


sar*_*old 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;
}
Run Code Online (Sandbox Code Playgroud)

编译gcc -o counter counter.c -lncurses.