尝试在 C++ 中制作动画加载圆
Trying to make an animated loading circle in c++
我正在尝试编写代码,使用 \|/-
制作纺车
基本上需要发生的是打印 - 行然后将其替换为 \ 然后 |然后 / 依此类推,看起来它正在制作动画加载 sign.The 问题是我不知道该怎么做。
这是一个小的 C 程序,可以做这样的事情。这假设您的终端使用 '\r' 转到行首而不是下一行。使用 flush 是因为有时输出会被缓冲,所以在刷新之前不会打印:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
printf("-");
fflush(stdout);
sleep(1);
printf("\r/");
fflush(stdout);
sleep(1);
printf("\r|");
fflush(stdout);
sleep(1);
printf("\r\");
fflush(stdout);
sleep(1);
printf("\n\n");
}
实际上你不会在睡觉,你会在打印语句之间工作。实际上,您可能希望 运行 在与打印此内容的线程不同的线程中工作,或者您需要定期中断工作以进行打印。
有关“\n”和“\r”之间区别的概述,请参阅 Difference between \n and \r?。
作为替代方案,如果您有支持 VT100 代码的终端,您可以使用这样的函数将光标移动到您可以绘制和重新绘制动画的特定位置:
void gotoxy(int x, int y)
{
printf("%c[%d;%df", 27, y, x);
}
如果这些方法都不起作用,您需要提供有关您尝试执行此操作的系统的更多信息。
我正在尝试编写代码,使用 \|/-
基本上需要发生的是打印 - 行然后将其替换为 \ 然后 |然后 / 依此类推,看起来它正在制作动画加载 sign.The 问题是我不知道该怎么做。
这是一个小的 C 程序,可以做这样的事情。这假设您的终端使用 '\r' 转到行首而不是下一行。使用 flush 是因为有时输出会被缓冲,所以在刷新之前不会打印:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
printf("-");
fflush(stdout);
sleep(1);
printf("\r/");
fflush(stdout);
sleep(1);
printf("\r|");
fflush(stdout);
sleep(1);
printf("\r\");
fflush(stdout);
sleep(1);
printf("\n\n");
}
实际上你不会在睡觉,你会在打印语句之间工作。实际上,您可能希望 运行 在与打印此内容的线程不同的线程中工作,或者您需要定期中断工作以进行打印。
有关“\n”和“\r”之间区别的概述,请参阅 Difference between \n and \r?。
作为替代方案,如果您有支持 VT100 代码的终端,您可以使用这样的函数将光标移动到您可以绘制和重新绘制动画的特定位置:
void gotoxy(int x, int y)
{
printf("%c[%d;%df", 27, y, x);
}
如果这些方法都不起作用,您需要提供有关您尝试执行此操作的系统的更多信息。