简单的printf案例

时间:2012-01-01 14:23:12

标签: c printf

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

这是我的代码:

" "

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:1)

标准输出是行缓冲的。试试这个:

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

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

int main(void){
    blink();
    return 0;
}