[Linux]第一个小程序-进度条

回车,换行概念

\n:回车,换行

 回车:回到最开始

换行:回到最新的一行

缓冲区概念 

#include <stdio.h>
int main()
{
 printf("hello Makefile!\n");
 sleep(3);
 return 0;
}
#include <stdio.h>
int main()
{
 printf("hello Makefile!");
 sleep(3);
 return 0;

我们在运行的时候会发现两段代码第一段 字符串先出来然后休眠三秒,第二段先休眠三秒再打印字符串

在我sleep期间,字符串在哪里?

缓冲区:内存空间,我们先这么理解,后面深入学习的时候我们再具体学习

程序结束的时候,一般要自动冲刷缓冲区

\n,\n之前的字符串立即刷新

缓冲区满了,自动刷新,暂时不考虑

强制刷新 

flush stream   特定的文件流的数据进行刷新

linux下一切皆文件,显示器自然也可以当一个文件来看待

我们c语言在程序运行的时候会为我们默认打开三个标准的输入输出流

stdin:  键盘

stdout   stderr显示器         

进度条代码 

typedef void(*callback_t)(double,double);
#include"Processbar.h"
#include<string.h>
#include<unistd.h>

void ProcBar(double total,double current)
{
 char bar[Length];
    //初始化,全部设置为指定的值,全是/0
    memset(bar,'\0',sizeof(bar));
    int len=strlen(lable);
    
    int cur=0;
    double rate=(current*100.0)/total;
    //循环次数
    int loop_count=(int)rate;
    while(cur<=loop_count)
    {
       bar[cur++]=Style;
    }
       printf("[%-100s][%.1lf%%][%c]\r",bar,rate ,lable[cur%len]);
       fflush(stdout);
}

double filesize =100*1024*1024*1.0;

void download(double filesize,callback_t cb)
{
//     //文件的大小
// double filesize =100*1024*1024*1.0;
//累计下载的数据量
double current =0.0;
//带宽网速
double bandwidth=1024*1024*1.0;
printf("download begin,current:%lf\n",current);

while(current<=filesize)
{
    cb(filesize,current);
    //从网络中获取数据
     current+=bandwidth;
     usleep(100000);
}
printf("\ndownload done,filesize:%lf\n",filesize);

}

int main()
{

    download(filesize,ProcBar);
    download(2*1024*1024,ProcBar);
    download(4*1024*1024,ProcBar); 


    return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值