一个动画处理图标,纯C



我想通过 C 在控制台中输出一个动画处理图标。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
void render_processing_icon(int turnovers_qt) {
char *icon_characters = "|/-\";
for (int i = 0; i < turnovers_qt * 8; i++) {
printf("b%c", icon_characters[i % 4]);
usleep(500000); // sleep for a half of a second
}
printf("n");
}
int main(int argc, char *argv[]) {
render_processing_icon(2);
printf("CONTROL MESSAGEn");
return 0;
}

但是在usleep()时间(0.5s * 营业额 * 8(结束后,程序输出以下内容(没有任何动画,正如您所猜测的(:

$ 
$ CONTROL MESSAGE

sleep()的工作方式相同,BASH 也通过sytstem()sleep。我只是不知道有什么问题。

这是因为您没有将printf刷新到终端。为了节省时间,终端通常会缓冲输出。在缓冲区已满的某个时间点或在某些终端中,当您将n写入流时,它将自动刷新。

尝试在for循环中的usleep之前使用fflush(stdout)来强制刷新。

相关内容

  • 没有找到相关文章

最新更新