最近想写个控制台下的进度条,可以知道程序的进展情况,不用弄个界面。其中最主要的就是“/b“字符,它的ascii码值是10,是退格的意思。
现把代码贴上,如下(可以在vc和linux编译):
progress.c
#include
#ifdef _WIN32
#include
#define mysleep(n) Sleep(n*1000)
#else
#include
#define mysleep(n) sleep(n)
#endif
void progressBar(int n)
{
static int currentNumber = 0;
if(n <= currentNumber)
return;
currentNumber = n;
if (n == 1)
{
currentNumber = n;
printf("= %d",n);
fflush(stdout);
return;
}
if(n<11)
printf("/b/b/b");
else
printf("/b/b/b/b");
printf("= ");
printf("%d", n);
fflush(stdout);
}
int main()
{
int i;
for (i = 1; i <= 100; ++i)
{
progressBar(i);
mysleep(1);
}
printf("/n");
return 0;
}
编译:
linux下:
gcc progress.c -o progress
在windows下:
vc下建一个progress工程,然后把代码贴上编译。
下图是windows下编译的截图:
另外,加个windows2000启动时的一个进度的效果:
#include
#ifdef _WIN32
#include
#define mysleep(n) Sleep(n*1000)
#else
#include
#define mysleep(n) sleep(n)
#endif
int main()
{
int i;
for (i = 1; i <= 100; ++i)
{
printf("=");
}
fflush(stdout);
for (i = 1; i <= 100; ++i)
{
printf("/b");
}
for (i = 1; i <= 100; ++i)
{
printf(">");
fflush(stdout);
mysleep(1);
}
printf("/n");
return 0;
}
windows和linux下都可以编译,下图是linux下的截图: