#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;
}