简单的printf案例

Jos*_*siP 3 c printf

我想*在我的Linux终端窗口上闪烁(星号),所以我想到使用ANSI控制代码并在循环中首先写入*然后sleep(1)写入" "(空格/空字符串)但它不起作用 - 看不到任何东西.为什么?

这是我的代码:

#include <stdio.h>
#include <unistd.h>

void blink(){
    while(1){
        printf("\033[2;2H*");
        sleep(1);
        printf("\033[2;2H ");
    }
}

int main(void){
    blink();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*Mat 7

你需要刷新stdout,它默认是缓冲的(你也应该在清除后稍微睡一会儿,否则你什么都看不到).

while(1){
    printf("\033[2;2H*");
    fflush(stdout);
    sleep(1);
    printf("\033[2;2H ");
    fflush(stdout);
    sleep(1);
}
Run Code Online (Sandbox Code Playgroud)