如何在控制台写一个简单的进度条
昨天在ubuntu下给同学拷贝电影,又遇到了那个蛋疼的问题,切换到别的界面的时候那个进度条的窗口就没有了,总也不知道拷贝的进度。
于是想写一个进度条,如何在程序中写一个简单的进度条呢?
Window下的简单实现:
#include<stdio.h>#include<string.h> #define str_len 100int linepos=0;const int dotnum=str_len;char str[str_len+1];void draw(){ memset(str,'*',linepos); //可以每次只改变两个字符来完成字符串的更新,此处略了str[linepos]='|';str[linepos+1]='|';memset(str+linepos+2,'*',str_len-linepos-1);putchar('\r'); //输出字符'\r',回到当前行的起始位置 //这个'\r'在linux下的意义是回到当前行的起始位置,但是在windows下跟'\n'是相同的,puts(str);fflush(stdout);linepos=(linepos+1)%str_len;}int main(){while(1){ draw();usleep(100);}return 0;}把这段儿代码在程序中运用,做一个详细点儿的进度条,可以获得好点儿的交互体验。(谁说terminal console就不需要交互体验呢?)