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