当前位置: 首页 > news >正文

C语言实现文本进度条

C语言实现文本进度条

int main()
{char pb[51] = {0};memset(pb, '-', sizeof(pb) - 1); //初始化50格puts("==下载文件==");for (int i = 0; i < strlen(pb); i++) {char tmp[51];strcpy(tmp, pb);memset(tmp, '*', i);printf("[%d%%][%s]\r", i * 2, tmp);  // 打印Sleep(200);}memset(pb, '*', sizeof(pb) - 1);printf("[%d%%][%s]\r", 100, pb);  // 结束printf("\n文件下载完成\n");system("pause");
}

优化一下:

#include <stdio.h>
#include <string.h>#ifdef _WIN32#include <windows.h>#define SLEEP_MS(x) Sleep(x)
#else#include <unistd.h>#define SLEEP_MS(x) usleep((x) * 1000)
#endif#define BAR_LENGTH 50  // 进度条长度void show_progress(int percent)
{char bar[BAR_LENGTH + 1];int filled = percent * BAR_LENGTH / 100;for (int i = 0; i < BAR_LENGTH; ++i)bar[i] = (i < filled) ? '*' : '-';bar[BAR_LENGTH] = '\0';printf("\r[%3d%%][%s]", percent, bar);fflush(stdout);
}int main(void)
{puts("== 下载文件 ==");for (int i = 0; i <= 100; i += 2) {show_progress(i);SLEEP_MS(100);  // 控制刷新速度}printf("\n文件下载完成!\n");printf("按 Enter 键退出...");getchar();return 0;
}

加个 下载速度,模拟文件下载

#include <stdio.h>
#include <stdlib.h>
#include <time.h>#ifdef _WIN32#include <windows.h>#define SLEEP_MS(x) Sleep(x)
#else#include <unistd.h>#define SLEEP_MS(x) usleep((x) * 1000)
#endif#define BAR_LENGTH 50
#define TOTAL_MB   100.0// 打印一帧进度条
void show_progress(double downloaded, double total, double speed)
{int percent = (int)((downloaded / total) * 100.0);int filled = (int)((double)BAR_LENGTH * percent / 100.0);char bar[BAR_LENGTH + 1];for (int i = 0; i < BAR_LENGTH; ++i)bar[i] = (i < filled) ? '#' : '-';bar[BAR_LENGTH] = '\0';const double eta = (total - downloaded) / (speed > 0 ? speed : 1e-9);   // 预计剩余时间printf("\r[%3d%%][%s] %.1f / %.1f MB | %.2f MB/s | ETA: %5.1fs",percent, bar, downloaded, total, speed, eta);fflush(stdout);
}int main(void)
{srand((unsigned int)time(NULL));double downloaded = 0.0;double total = TOTAL_MB;double avgSpeed = 0.0;clock_t start = clock();puts("== 模拟文件下载 ==");while (downloaded < total) {// 模拟当前速度波动(范围约 0.8~1.6 MB/s)double speed = 0.8 + ((rand() % 80) / 100.0);// 模拟下载进度downloaded += speed * 0.2; // 每次循环约 0.2 秒if (downloaded > total) downloaded = total;show_progress(downloaded, total, speed);SLEEP_MS(200);}double elapsed = (double)(clock() - start) / CLOCKS_PER_SEC;avgSpeed = total / elapsed;printf("\n下载完成!总耗时:%.2f 秒,平均速度:%.2f MB/s\n", elapsed, avgSpeed);printf("按 Enter 键退出...");getchar();return 0;
}
http://www.dtcms.com/a/455284.html

相关文章:

  • 我的wordpress网站吗中国房地产未来走势
  • 小说网站开发 项目计划书万户网络oa
  • 建设网站用什么东莞软件开发培训
  • 确保网站地址没有做301跳转做网站的是什么职业
  • 网站建立安全连接失败公司常用邮箱
  • 推广网站2024亳州市建设局网站
  • 个人备案转企业网站期间辽宁网络优化方法
  • 整站seo技术搜索引擎优化软件开发培训通知
  • 淘宝网站建设的目标哪种编程语言可以做网站
  • 张北北京网站建设做个简单的导航网站
  • 烟台门户网站免费网站源码
  • 知名网站建设官网品牌营销与市场营销的区别
  • 企业头像logo设计免费网站优化需要那些工具
  • 可以做试卷的网站的网络公司
  • 深圳做网站维护的公司企业网络平台建设
  • 淘客网站系统免费源码哪个网站原创文章
  • 泰然建设网站设计网站logo
  • 网站建设 保障接单 计划建设一个网站哪家好
  • 网站都需要什么类别wordpress怎么发博客
  • 网站建设类行业资讯html作业代码
  • 肖云路那有做网站公司wap网页制作教程
  • FreeRTOS与软件定时器(七)
  • 什么网站可以做问卷扬州做网站的
  • 实惠的网站建设做网站需要找人优化吗
  • 做图片视频的网站建设网站要什么资料
  • 苏州做网站品牌公司假网站怎么做
  • 怎么查看网站是哪家公司做的php网站后台上传图片有没有推荐到首页的功能
  • 体育馆路网站建设qq网站 直接登录
  • MySQL表的操作:创建—修改—删除流程解析
  • 网站专题方案工程建设标准网站