простой случай printf - PullRequest
       6

простой случай printf

3 голосов
/ 01 января 2012

Я хочу мигать * (звездочка) в моем окне терминала 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;
}

Ответы [ 2 ]

7 голосов
/ 01 января 2012

Вам нужно сбросить stdout, по умолчанию она буферизована (и после очистки вам следует поспать немного, иначе вы ничего не увидите).

while(1){
    printf("\033[2;2H*");
    fflush(stdout);
    sleep(1);
    printf("\033[2;2H ");
    fflush(stdout);
    sleep(1);
}
1 голос
/ 01 января 2012

Стандартный вывод буферизован.Попробуйте это:

#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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...