所以我用C制作了一个BMI计算器,但我想让它看起来更像一个程序,让它更有趣,并有一点额外的特色。我一直在尝试实现的一个功能是制作一个动画,上面写着"加载…"。。。其中"每次出现一秒钟,以模拟实际正在加载的东西。我想出了这样的东西:
printf("Loading");
for (int i = 0; i < 5 ; i++)
{
printf(".");
sleep(1);
}
然而,这根本不起作用,因为它打印出来的只是Loading,然后"以及接下来节目中出现的内容。如果在循环中的printf内部,我可以像在中一样\n使其工作
printf("Loading");
for (int i = 0; i < 5 ; i++)
{
printf(".n");
sleep(1);
}
任何关于为什么会发生这种情况的建议都将不胜感激。感谢
您可以使用b
退格。您可能还必须确保每次打印后都会刷新控制台,因为通常只有在遇到n
时才会发生这种情况。
这里有一个可怕的Windows加载屏幕模拟器:
(只有Sleep
是Windows特有的,其余都是标准C。(
#include <stdio.h>
#include <windows.h>
int main (void)
{
printf("Loading"); fflush(stdout);
for(;;)
{
for(int i=0; i<3; i++)
{
printf("."); fflush(stdout);
Sleep(300);
}
for(int i=0; i<3; i++)
{
printf("b b"); fflush(stdout);
Sleep(300);
}
}
return 0;
}
b b
返回一个字符,再次打印向前移动1个位置的空格,第二个b
对此进行计数。
试试这样的东西:
printf("Loading");
fflush(stdout);
for (int i = 0; i < 5; i++) {
putchar('.');
fflush(stdout);
sleep(1);
}
putchar('n');
sleep()
是unistd.h
Unix库的一部分。