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

news2024/9/20 20:43:26

 Linux小程序:进度条

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

        1.缓冲区;

        2.回车与换行。

缓冲区:

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

程序一:

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

程序二:

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

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

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

回车与换行: 

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

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

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

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

进度条:

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

        头文件为:#include <unistd.h> 

        函数:fflush()

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

进度条,启动!!

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

makefile:

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

game.h:

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

game.c:

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

main.c:

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

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

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

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

                                              

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1238469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【云原生-Kurbernetes篇】 玩转K8S不得不会的HELM

Helm 一、Helm1.1 使用背景1.2 Helm简介1.3 Helm的几个概念1.4 helm2 和 helm3 的区别1.5 chart包的关键组成 二、Helm相关命令2.1 应用管理操作2.2 Helm repository仓库管理命令2.2 Helm chart包管理命令2.3 Helm release(实例) 管理命令2.4 Helm私有仓库管理命令 三、部署He…

代码混淆不再愁:一篇掌握核心技巧

​ 1. 概述 代码混淆是将计算机程序的代码转换成一种功能上等价&#xff0c;但是难以阅读和理解的形式。 对于软件开发者来说&#xff0c;代码混淆可以在一定程度上保护程序免被逆向。 对于逆向工程师来说&#xff0c;学习代码混淆可以帮助我们研究反混淆技术。 2. 常见混淆…

vue2使用el-tag自定义菜单导航标签

需求&#xff1a;使用el-tag写个菜单导航栏&#xff0c;点击路由的时候就添加 功能&#xff1a; 设置鼠标横向滚动并且不展示滚动条添加关闭其他、关闭左侧、关闭右侧、全部关闭标签功能单个标签删除功能添加&#xff0c;固定标签不可删除右键点击展开操作菜单栏设置个默认固定…

厦门某智慧社区的智慧排水监测系统实施落地

厦门某智慧社区的智慧排水监测系统实施落地 智慧社区的排水系统是一种高度智能化、高效且环保的排水解决方案&#xff0c;它结合了自动化控制系统、计算机网络技术、传感监测技术以及环保理念等多个领域的知识。其主要作用是确保社区的排水系统能够高效、稳定、环保地运行&…

Go并发编程学习-class1

class1. Mutex 解决资源并发访问 基础概念 临界区概念&#xff1a;一个被共享的资源&#xff0c;可以被并发访问。通过Mutex互斥锁&#xff0c;可以限定临界区只能由一个线程获取。 根据不同情况&#xff0c;不同适用场景 ●共享资源。并发地读写共享资源&#xff0c;会出现…

规划类3d全景线上云展馆帮助企业轻松拓展海外市场

科技3D线上云展馆作为一种基于VR虚拟现实和互联网技术的新一代展览平台。可以在线上虚拟空间中模拟真实的展馆&#xff0c;让观众无需亲自到场&#xff0c;即可获得沉浸式的参观体验。通过这个展馆&#xff0c;您可以充分、全面、立体展示您的产品、服务以及各种创意作品&#…

OpenAI董事会秒反悔!奥特曼被求重返CEO职位

明敏 丰色 发自 凹非寺 量子位 | 公众号 QbitAI 1天时间&#xff0c;OpenAI董事会大变脸。 最新消息&#xff0c;他们意在让奥特曼重返CEO职位。 多方消息显示&#xff0c;因为“投资人的怒火”&#xff0c;OpenAI董事会才在一天时间里来了个大反转。 微软CEO纳德拉被曝在得…

Imaris 卡退,是不是缓存盘没有设置好?

必须记录一下&#xff0c;从Imaris哔哩哔哩官方视频上学到的&#xff0c;如何设置缓存位置&#xff0c;尤其是做3D视频的时候。 但是隔一段时间就忘记&#xff0c;找不到当时的哔哩哔哩视频 这里记一下 如果是空间比较小的C盘&#xff0c;可以改成一个空间大一点的位置。 把缓…

用Stable Diffusion帮助进行卡通风格渲染

用Stable Diffusion帮助进行卡通风格渲染 正常风格渲染卡通风格贴图增加涅斐尔边缘高光效果 正常风格渲染 正常的动物写实模型 卡通风格贴图 用Stable Diffusion可以帮助我们将写实贴图转化为卡通风格&#xff08;具体参数可以自己调试&#xff0c;总体上是将提示词强度和图…

Python中控制台如何展示进度条——tqdm库使用

在 Python 中可以使用特定的库来创建控制台进度条&#xff0c;其中 tqdm 是一个常用的选择&#xff0c;它能够方便地显示进度条并跟踪迭代的进度。你可以通过 pip 安装 tqdm 库&#xff1a; pip install tqdm包装迭代器&#xff1a; 使用 tqdm 来包装你的迭代器&#xff0c;比…

外卖配送小程序商城的效果如何

线下餐饮店非常多&#xff0c;主要以同城生意为主&#xff0c;在线上电商和外卖平台的冲击下&#xff0c;传统商家仅通过传统方式经营很难宣传拓客及转化等&#xff0c;线上是必要的渠道&#xff0c;但入驻第三方平台又会有各种困扰&#xff0c;抽成/佣金/流量费/激烈竞争等。 …

C++ MiniZip实现目录压缩与解压

Zlib是一个开源的数据压缩库&#xff0c;提供了一种通用的数据压缩和解压缩算法。它最初由Jean-Loup Gailly和Mark Adler开发&#xff0c;旨在成为一个高效、轻量级的压缩库&#xff0c;其被广泛应用于许多领域&#xff0c;包括网络通信、文件压缩、数据库系统等。其压缩算法是…

pyqt5 窗口调用网页高德地图kpi,进行实时地图导航

作为主项目功能的一部分&#xff0c;这部分我想单独记录下来 一&#xff0c;注册高德kpi【进行实名认证】 高德开放平台 | 高德地图API (amap.com) 二&#xff0c;申请Key 三&#xff0c;进入路径规划-API文档-开发指南-Web服务 API|高德地图API (amap.com) 找到你需要的路径…

Linux 中 .tar 和 tar.gz 的区别

1、前言 有时候你会发现&#xff0c;即便是有些拥有 3 年左右工作经验的运维或开发工程师对 .tar 和 .tar.gz 的区别并不是很清楚。.tar 和 .tar.gz 是在 Linux 系统中用于打包和压缩文件的两种常见格式。它们之间的主要区别在于压缩算法和文件扩展名。 2、区别 .tar .tar 是…

剧情继续:马斯克曝出OpenAI前员工举报信,董事会与奥特曼谈判回归

丰色 发自 凹非寺 量子位 | 公众号QbitAI 经过4天的极限拉扯、反转再反转&#xff0c;奥特曼有可能重新回归了。 据知情人士透露&#xff0c;OpenAI董事会正与奥特曼进行一场“富有成效”的新谈判。 如果奥特曼回到OpenAI&#xff0c;他将继续担任CEO。 与此同时&#xff0c…

909-2015-T1

文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 线性表使用公式化描述方式存储。编写一个函数&#xff0c;从一给定的线性表A中删除值在x ~ y&#xff08;x到y&#xff0c;x<y&#xff09;之间的所有元素&#xff0c;要求以较高的效率来实现。提示&#…

【正点原子STM32连载】第五十六章 DSP BasicMath实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html## 第五…

2023 年戴森设计大奖得主是谁?给大楼降温、争取救援机会

2023 年戴森设计大奖得主是谁&#xff1f;给大楼降温、争取救援机会 ​编辑拉风的极客2023/11/22 摘要 当今社会除了持续不断对科技创新保持注目&#xff0c;还有很多年轻发明家为了实际场景的难题提供解决方案。 11 月 15 日&#xff0c;2023 年戴森设计大奖国际大奖名单正…

在 Redis 中使用 JSON 文档:命令行界面(CLI)和 Navicat 集成

Redis&#xff0c;因其极高的性能而闻名&#xff0c;是一款多功能的 NoSQL 数据库&#xff0c;擅长处理键值对。虽然 Redis主要用于处理简单数据结构&#xff0c;但是同样支持更多复杂的数据类型&#xff0c;如列表、集合甚至是 JSON 文件。在本文&#xff0c;我们将深入到 Red…

聚类系列(一)——什么是聚类?

目前在做聚类方面的科研工作, 看了很多相关的论文, 也做了一些工作, 于是想出个聚类系列记录一下, 主要包括聚类的概念和相关定义、现有常用聚类算法、聚类相似性度量指标、聚类评价指标、 聚类的应用场景以及共享一些聚类的开源代码 下面正式进入该系列的第一个部分&#xff…