易截截图软件、单文件、免安装、纯绿色、仅160KB

用c写个控制台下的进度条

最近想写个控制台下的进度条,可以知道程序的进展情况,不用弄个界面。其中最主要的就是“\b“字符,它的ascii码值是10,是退格的意思。
现把代码贴上,如下(可以在vc和linux编译):
progress.c
#include <stdio.h>
#ifdef _WIN32
#include <windows.h>
#define mysleep(n) Sleep(n*1000)
#else
#include <unistd.h>
#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 <stdio.h>
#ifdef _WIN32
#include <windows.h>
#define mysleep(n) Sleep(n*1000)
#else
#include <unistd.h>
#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下的截图:


相关文档:

c/c++语言问题中可变参数


 va_list是c/c++语言问题中解决可变参数的一组宏.先来看一个程序例子吧.
view plaincopy to clipboardprint?
#include <stdarg.h>   
/** 函数名:max  
  * 功能:返回n个整数中的最大值  
  *  参数:num:整数的个数 . ......

scanf("%c")

今天做了ACM1010
代码都对就是怎么也不能AC。那个郁闷啊!一晚上都想那个了。
本来有俩组输入,可是输出的结果就一组。仔细看输入,竟然自动换行了,奇怪,这是咋回事。
猜测可能是读入了换行符。同样的问题这C++中就没有啊!
最后通过加getchar();AC通过。 ......

c函数: strtok 和 strtok_r

函数名:   strtok    
  功     能:   查找由在第二个串中指定的分界符分隔开的单词    
  用     法:   char   *strtok(char   *str1,   char   *str2);    
  程序例:    
   
&nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号