我试着用C语言制作一个时钟,但是屏幕没有完全清空,只是一直在打印到一个新的行。如何不正确地使用fflush

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    while (1) {

        time_t rawtime;
        struct tm * timeinfo;

        time ( &rawtime );
        timeinfo = localtime ( &rawtime );
        printf ("%s", asctime (timeinfo));
        fflush(stdout);

    }
    return 0;
}

最佳答案

这将从asctime字符串中去掉换行符,然后使用回车键将光标推回到行首

#include <string.h>

int main()
{
        while (1) {

                    time_t rawtime;
                    char st[30];
                            struct tm * timeinfo;

                                    time ( &rawtime );
                                    timeinfo = localtime ( &rawtime );
                                    sprintf (st,"%s", asctime (timeinfo));
                                    *(index(st,'\n'))='\0';
                                    printf("\r%s",st);
                                    flush(stdout);
                                    sleep(1);

                  }
                                    return 0;
}

关于c - 使用fflush的时钟无法清除屏幕,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19602930/

10-09 16:06