我想*在我的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)
你需要刷新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)