C/C++consloe 中动态显示进度
来源:互联网 发布:25 知乎 编辑:程序博客网 时间:2024/05/22 14:29
源自我的一个问题:http://topic.csdn.net/u/20110409/23/57e20e2c-4700-4853-82f6-fe3d135d7305.html?seed=539710984&r=72676818#r_72676818
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!/n");
for(int i=0;i<100;++i)
{
printf("%d /n",i);
fflush(stdout);
sleep(1);
}
return 0;
}
如果没有fflush(stdout);那么每一次循环都不会立即输出i的值,只有等到总共等待了i秒以后才会输出所有的i。
使用fflush(stdout)会立即要求刷新输出缓冲。
值得注意的是,‘/n’也会要求立即刷新输出缓冲和c++中的endl作用一样。
要实现动态数字改变的效果,可以如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!/n");
for(int i=0;i<100;++i)
{
printf("/r%d ",i); // /r是回车符,定位到一行的开始位置
fflush(stdout);
sleep(1);
}
return 0;
}
另一种方法:
int main()
{
printf("You have downlod the file.......");
for(int i=0;i<101;++i)
{
printf("%2.0f%%",(i/100.0)*100);
fflush(stdout);
sleep(1);
printf("/b/b/b");
fflush(stdout);
}
return 0;
}
在加上一点漂亮的动画:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("You have downlod the file.......");
char achar[4]={'-','//','/'};
for(int i=0;i<101;++i)
{
printf("%c %2.0f%%",achar[i%3],(i/100.0)*100);
fflush(stdout);
usleep(500000);
printf("/b/b/b/b/b");
fflush(stdout);
}
return 0;
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
归纳为一个函数:
#include <stdio.h>
#include <stdlib.h>
void dynamicPrint(char str [],unsigned int usecond)
{
printf("%s",str);
char achar[4]={'-','//','/'};
for(int i=0;i<101;++i)
{
printf("%c %2.0f%%",achar[i%3],(i/100.0)*100);
fflush(stdout);
usleep(usecond);
printf("/b/b/b/b/b");
fflush(stdout);
}
}
int main()
{
unsigned int us=500000;
char str[]="Good luck,your file has downloaded.....";
dynamicPrint(str,us);
return 0;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
使用C++编写的函数
#include <iostream>
#include <string>
#include <cstdio> //fflush()
#include <unistd.h> //usleep()
#include <iomanip> //setw()
void dynamicPrint(std::string &str,unsigned int usecond)
{
std::cout<<str;
char achar[4]={'-','//','/'};
for(int i=0;i<101;++i)
{
std::cout<<achar[i%3]<<" "<<std::setw(2)<<(i/100.0)*100<<"%";
std::cout.flush();
usleep(usecond);
std::cout<<"/b/b/b/b/b";
std::cout.flush();
}
}
int main()
{
std::string str="hello....";
unsigned int us=500000;
dynamicPrint(str,us);
return 0;
}
- C/C++consloe 中动态显示进度
- C#_ProgressBar 显示进度数字
- C/C++ 在控制台下显示进度
- C/C++ 在控制台下显示进度
- C程序显示执行进度信息
- c语言进度显示怎么编写
- C/C++ 在控制台下显示进度
- C#-动态显示时间
- 如何用C/C++在控制台下动态输出进度
- C++Builder利用URLDownloadToFile下载文件并显示进度
- Linux C 实现mycp 可以显示文件拷贝进度
- c中动态库
- 学习c语言进度
- c中显示汉字
- 3位共阴数码管动态显示(c代码)
- 单片机数码管动态显示—C语言版
- 动态数码管显示(C源码)
- 1602动态显示字符--C语言版本
- Asp.net输出内容不缓存代码
- 用WTL实现自定义绘制控件
- c++进阶之---istream/ostream简介
- 树的统计
- Response.End()出错可以替换为HttpContext.Current.ApplicationInstance.CompleteRequest()
- C/C++consloe 中动态显示进度
- 全力打造互联网推广最优秀的超级工具
- php中的引用传值分析
- mysql 死锁处理
- c++进阶之---ifstream/ofstream
- 项目实践与用OpenGL实现OBJ模型文件的读入
- lucene索引结构的整理
- jquery之利用ajax与服务器交谈(温习ajax之跟踪进展)
- Jdk1.6新特新 - Annotation