• Linux:进度条(小程序)以及git三板斧


     Linux小程序:进度条

    在实现小程序前我们要弄清楚:

            1.缓冲区;

            2.回车与换行。

    缓冲区:

    分别用gcc来编译下面两个程序:

    程序一:

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

    程序二:

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

            可以看到打印程序二没有 \n ’后,没有在该打印的时候打印,反而在结束后才出现,

    这说明peintf的运行结果hello Makefile被提起保存在了某个地方,当程序结束时,hello Makefile才打印出来,这个地方就是缓冲区!

    回车与换行: 

    通过老式键盘就会发现其实Enter是包含换行和回车的意思:

            回车:就是到一行的开头;

            换行(' \r '):切换到当前位置的下一行;

     有了以上的知识储备我们就可以开始写Linux的第一个程序了!!

    进度条:

    由于没有了' \n '无法刷新缓冲区,所以还需要了解一个强制刷新的函数:

            头文件为:#include  

            函数:fflush()

    此时我们先来写个倒计时:

    进度条,启动!!

    首先需要创建makefile文件实现多文件之间的自动化构建:

    makefile:

    1. 1 my-test:game.o main.o
    2. 2 gcc -o $@ $^
    3. 3 main.o:main.c
    4. 4 gcc -c main.c
    5. 5 game.o:game.c
    6. 6 gcc -c game.c
    7. 7
    8. 8 .PHONY:clean
    9. 9 clean:
    10. 10 rm -f my-test game.o main.o

    game.h:

    1. 1 #include
    2. 2 #include
    3. 3 #include
    4. 4 #include
    5. 5
    6. 6 #define Head '>'
    7. 7 #define MAX 102
    8. 8 #define CHAR '='
    9. 9
    10. 10 //进度条实现
    11. 11 void Progress(double n);

    game.c:

    1. 1 #include "game.h"
    2. 2 //下载在进行图标
    3. 3 const char*arr1="|/-\\";
    4. 4 //进度条数组
    5. 5 char arr2[MAX] = {};
    6. 6 void Progress(double n)
    7. 7 {
    8. 8 //char arr1[4] = "|/-\";
    9. 9 static int count = 0;
    10. 10 int count1 = count % 4;
    11. 11 count++;
    12. 12 //下载进度未达到1%需要一个箭头表示
    13. 13 if(n <= 1.0)
    14. 14 arr2[0] = Head;
    15. 15 //\033:表示颜色开始 [5;31;44m:表示闪烁;前景色为黄色;背景色为蓝色 \033[0m:表示清空颜色缓存
    16. 16 //\r:表示回到开头
    17. 17 printf("[\033[5;31;44m%-100s\033[0m][%.1f%%][%c]\r",arr2,n,arr1[count1]);
    18. 18 //强制刷新缓冲区
    19. 19 fflush(stdout);
    20. 20 //按百分比显示进度
    21. 21 arr2[(int)n] = CHAR;
    22. 22 if(n < 99)
    23. 23 arr2[(int)n+1] = Head;
    24. 24
    25. 25 }

    main.c:

    1. 1 #include "game.h"
    2. 2
    3. 3 void Down1()
    4. 4 {
    5. 5 //取随机数
    6. 6 srand(time(NULL));
    7. 7 //需要下载的大小
    8. 8 int num = 1024 * 1024 *1024;
    9. 9 int nnn = num;
    10. 10 //下载未完成继续下载
    11. 11 while(num)
    12. 12 {
    13. 13 //休眠1000微秒
    14. 14 usleep(1000);
    15. 15 //本次下载的大小
    16. 16 int download = rand() % (1024 * 1024);
    17. 17 //还需要的下载量
    18. 18 num = num - download;
    19. 19 //下载完成
    20. 20 if(num < 0)
    21. 21 num = 0;
    22. 22 int downnum = nnn - num;
    23. 23 //下载占需要下载的百分比
    24. 24 double n = ((downnum * 1.0) / nnn ) * 100.0;
    25. 25 Progress(n);
    26. 26 }
    27. 27 printf("\n");
    28. 28 }
    29. 29
    30. 30 int main()
    31. 31 {
    32. 32 Down1();
    33. 33
    34. 34 return 0;
    35. 35 }

    特别注意: 

            进度条是建立在一个加载这类的板子上的,不是用程序写出来后自己控制进度的!需要配合一些下载场景,根据下载量的大小和下载速度来实时对进度进行同步更新!!!

    使用Gitee创建项目:

    首先需要在Linux安装git:

    格式:yum intall git

    其次需要创建一个Gitee账号Gitee - 基于 Git 的代码托管和研发协作平台

    然后创建一个仓库,如下:如果不需要裁剪文件就不需要勾选 .gitignore

    在创建好的仓库页面中复制仓库的链接, 以备接下来进行同步数据:

    下载仓库到本地:

    将代码放到刚才下载好的目录中
    格式:git clone [url]
    这里的 url 就是刚刚建立好的 项目 的链接

    三板斧第一项:git add

    将代码放到刚才下载好的目录中
    格式:git add [文件名]
    将需要用 git 管理的文件告知 git

    三板斧第二项:git commit

    提交改动到本地
    格式:git commit .

    最后的 "." 表示当前目录
    提交的时候应该注明提交日志, 描述改动的详细内容
    .

    三板斧第三项:git push

    同步到远端服务器上
    格式:git push
    需要填入用户名密码. 同步成功后, 刷新 Github 页面就能看到代码改动了。

    过程: 

    需要注意:git add .只是将文件放入暂存区,还没有放入到本地仓库中!!!

    特别注意: 

    1.如下图中的.gitignore中包含的文件格式会进行过滤,并且是修改就会生效的!!!

    2.当我们在进行多人关联一个远程仓库时,一方进行远程提交后,另一方要想远程提交必须同步远程仓库!(必须保证所有的人都能看到!),git仓库如果本地和远端仓库不同步,git会强制你进行同步!

    以上就是个人学习的见解和学习过程的解析,欢迎各位大佬在评论区探讨,交流!

    如果本篇对你有帮助的话,三连支持一下吧。

    感谢大佬们的三连! 感谢大佬们的三连! 感谢大佬们的三连!

                                                  

  • 相关阅读:
    Factory Method
    2023秋招--快手--游戏客户端--二面面经
    防蓝光护眼灯哪个牌子比较好?目前比较好用的护眼灯推荐
    搜索结果处理
    ABB机器人10106故障报警(维修时间提醒)的处理方法
    Spring Security Taglibs 简介
    Web前端 | JavaScript(事件)
    三次握手四次挥手
    2.6 Go语言中的Map
    《TCP/IP网络编程》阅读笔记--基于Windows实现Hello Word服务器端和客户端
  • 原文地址:https://blog.csdn.net/weixin_71964780/article/details/134501825