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

Linux第一个小程序-进度条(缓冲区概念)

1.\r和\n

C语言中有很多字符

a.可显字符

b.控制字符

对于回车其实有两个动作,首先换行,在将光标指向最左侧

\r :回车

\n:换行

下面举个例子:

efeff44c25cde8e0775add30fbe698dd.png
8e77954370843e4083c52c8522fa7ada.png

把\n去掉会怎样

b68b706f2327aa259f754854ca621b8f.png
beb92e0c6b951377eb4e08ff9d5d719c.png

什么都没输出。为什么?

2.缓冲区概念

观察下两个代码的区别

408e3288f7136a45418325a81c16a7d4.png
0590689b6c13e9f3f05305c15c47421e.png

上面的代码会等待3s后才输出,而下面的代码会直接输出。

不加\n好像是先执行了sleep,在执行printf?

并不是!!! 一定是先执行完printf,在执行sleep

Hello Linux没有被刷新,数据一定是在sleep期间被保存起来了,为什么\n,数据就显示出来了呢?

缓冲区有自己的刷新策略,只要看到\n,就会刷新

4eb43c6e3faeb3022440195d9df1a32c.png
d315e370c44a175f1ac5e3d167e09489.png

为什么没有显示Hello Linux 因为\r将光标移到了最左侧,然后显示的Hello Linux被root@ikun test覆盖。光标跟显示器匹配,光标在哪里,显示器就显示在哪里!

倒计时小程序

93f9222f31083ad3bab12605a4938051.png
d96507b78606ed1ae7618e3cb207f2f0.png

什么都没有显示

改写,刷新缓冲区

fc21f976ff814b8f7492d9bd64a973e5.png
8164f1a7f387214b2b55011eb684d1e3.png

结果是从屏幕上倒计时从9到0

如果从10开始倒计时呢?

586aed32363bda04129f16dec45caf93.png
8a794133c22ad67ad482999a5963623a.png

3.进度条程序

文件分离

ec15f302bfa66979af38d1b5459fceca.png

proc.h


#pragma once
#include <stdio.h>  
#include"proc.h"
#include<string.h>
#include<unistd.h>  //该头文件是Linux下的,windows没有#define SIZE 101
#define STYLE '='
#define ARR '>' 
extern void process();

proc.c


#include "proc.h"
void process()
{char bar[SIZE];memset(bar, '\0', sizeof(bar));  //初始化barint i = 0;while (i <= 100){printf("[%-100s][%d%%][%c]\r", bar, i);   //-100左对齐,fflush(stdout);  //刷新缓冲区bar[i++] = STYLE;if (i != 100)bar[i] = ARR;usleep(100000);}printf("\n");
}

main.c


#include "proc.h"int main()
{process();return 0;
}
dd187fb983d057e10e0e129131d7d395.png

 

 

 

相关文章:

Linux第一个小程序-进度条(缓冲区概念)

1.\r和\n C语言中有很多字符 a.可显字符 b.控制字符 对于回车其实有两个动作&#xff0c;首先换行&#xff0c;在将光标指向最左侧 \r &#xff1a;回车 \n&#xff1a;换行 下面举个例子&#xff1a; 把\n去掉会怎样 什么都没输出。为什么&#xff1f; 2.缓冲区概念 观察下两个…...

CentOS7环境安装tomcat

环境准备 由于是在练习&#xff0c;为了方便&#xff0c;我们可以 1.关闭防火墙 systemctl disable firewalld.service systemctl stop firewalld.service 2.关闭selinux 在/etc/selinux/config中&#xff0c;设置&#xff1a; SELINUXdisabled 3.准备jdk---》jdk-8u333-li…...

C# 中使用ValueTask优化异步方法

概要 我们在开发过程中&#xff0c;经常使用async的异步方法&#xff0c;但是有些时候&#xff0c;异步的方法中&#xff0c;可能包含一些同步的处理。本文主要介绍通过ValueTask这个struct&#xff0c;优化异步处理的方法性能。 代码及实现 有些时候我们会缓存一些数据在内…...

KVM创建新的虚拟机(图形化)

1.启动kvm管理器 [rootlocalhost ~]# virt-manager2.点击创建虚拟机 3.选择所需os安装镜像 4.选择合适的内存大小和CPU 5.创建所需磁盘 6.命名创建的虚拟机...

正则表达式在格式校验中的应用以及包装类的重要性

文章目录 正则表达式&#xff1a;做格式校验包装类&#xff1a;在基本数据类型与引用数据类型间的桥梁总结 在现代IT技术岗位的面试中&#xff0c;掌握正则表达式的应用以及理解包装类的重要性是非常有益的。这篇博客将围绕这两个主题展开&#xff0c;帮助读者更好地面对面试挑…...

Docker使用之java项目工程的部署

同样本文的基础建立在已在目标服务器&#xff08;以linux为示例&#xff09;上安装了docker&#xff0c;安装教程请移步度娘 若容器存在请先停止&#xff0c;在删除&#xff0c;然后删除镜像重新编译 //停止容器 sudo docker stop datatransfer//删除容器 sudo docker rm dat…...

3ds Max如何进行合成的反射光泽通道渲染

推荐&#xff1a; NSDT场景编辑器 助你快速搭建可二次开发的3D应用场景 1. 准备场景 步骤 1 打开 3ds Max。smart_phone.max打开已 随教程提供。 打开 3ds Max 步骤 2 按 M 打开材质编辑器。选择空材料 槽。单击漫射通道。它将打开材质/贴图浏览器窗口。选择位图&#xff0…...

114、Spring AOP是如何实现的?它和AspectJ有什么区别?

Spring AOP是如何实现的?它和AspectJ有什么区别? 一、AOP的理解1、spring aop:动态代理实现2、spring aop 和 AspectJ的区别3、小图一、AOP的理解 其实,AOP只是一种编程思想,表示面向切面编程,如果想实现这种思想,可以使用动态代理啊,第三方的框架 AspectJ啊等等。 1…...

正则表达式速通

简介 正则表达式&#xff0c;我们可以看作通配符的增强版&#xff0c;可以帮我们匹配指定规则的字符串&#xff0c;在计算机中应用广泛&#xff0c;比如说爬虫、网站的登录表单等。 原视频&#xff1a;https://www.bilibili.com/video/BV1da4y1p7iZ 学习正则表达式的常用工具…...

数据可视化(5)热力图及箱型图

1.热力图 #基本热力图 #imshow&#xff08;x&#xff09; #x&#xff0c;数据 x[[1,2],[3,4],[5,6],[7,8],[9,10]] plt.imshow(x) plt.show() #使用热力图分析学生的成绩 dfpd.read_excel(学生成绩表.xlsx) #:表示行号 截取数学到英语的列数 xdf.loc[:,"数学":英语].…...

React 组件通信-全面解析

父子组件通信 // 导入 import { useState } from "react";import "./App.scss"; import { defaultTodos } from "./components/module/contentData";// 子组件 const Module ({ id, done, text, onToggle, onDelData }) > {return (<div…...

“深入理解Spring Boot:快速构建微服务架构的利器“

标题&#xff1a;深入理解Spring Boot&#xff1a;快速构建微服务架构的利器 摘要&#xff1a;Spring Boot是一种基于Spring框架的开源项目&#xff0c;它通过自动化配置和约定优于配置的原则&#xff0c;使得开发者能够快速构建微服务架构。本文将深入介绍Spring Boot的特点和…...

SpringBoot超级详解

1.父工程的父工程 在父工程的父工程中的核心依赖&#xff0c;专门用来版本管理的 版本管理。 2.父工程 资源过滤问题&#xff0c;都帮解决了&#xff0c;什么配置文件&#xff0c;都已经配置好了&#xff0c;资源过滤问题是帮助&#xff0c;过滤解决让静态资源文件能够过滤到…...

手机的python怎么运行文件,python在手机上怎么运行

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;手机上的python怎么运行程序&#xff0c;手机的python怎么运行文件&#xff0c;今天让我们一起来看看吧&#xff01; 1、python程序怎么在手机上运行 python语言应用很广泛&#xff0c;自己也很喜欢使用它&#xff0c;其…...

RBAC三级树状菜单实现(从前端到后端)未完待续

1、表格设计 RBAC 2、前端路由 根据不同的用户id显示不同的菜单。 根据路由 3、多级菜单 展示所有权限&#xff0c;并且根据当前用户id展示它所属的角色的所有菜单。 前端树状展示 思路&#xff1a; 后端&#xff1a;传给前端map&#xff0c;map里1个是所有菜单&am…...

牛客网Verilog刷题——VL41

牛客网Verilog刷题——VL41 题目答案 题目 请设计一个可以实现任意小数分频的时钟分频器&#xff0c;比如说8.7分频的时钟信号&#xff0c;注意rst为低电平复位。提示&#xff1a;其实本质上是一个简单的数学问题&#xff0c;即如何使用最小公倍数得到时钟周期的分别频比。设小…...

大整数截取解决方法(java代码)

大整数截取解决方法&#xff08;java代码&#xff09; 描述输入描述输出描述输入示例输出示例前置知识&#xff1a;代码 解题思路来自这个博客&#xff1a;简单^不简单 https://blog.csdn.net/younger_china/article/details/126376374 描述 花花有一个很珍贵的数字串&#xf…...

Spring Boot使用@Async实现异步调用:自定义线程池

一、定义线程池 第一步&#xff0c;先在Spring Boot主类中定义一个线程池&#xff0c;比如&#xff1a; SpringBootApplication public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}EnableAsyncConfigurat…...

GFS 分布式文件系统

目录 一、GlusterFS 概述 1.2&#xff0e;GlusterFS特点 1.3&#xff0e;GlusterFS 术语 1.4GlusterFS 的工作流程 二、GlusterFS的卷类型 2.1分布式卷&#xff08;Distribute volume&#xff09; 2.1.1特点 2.2条带卷&#xff08;Stripe volume&#xff09; 2.2.1条…...

PHP-mysql学习笔记

如题 记录发送emoji数据无法正常显示的问题PHPMysql 记录 发送emoji数据无法正常显示的问题 问题描述 前端发送关于emoji的表情数据给php,php写入mysql php接收到了数据,但无法写入写入过后返回前端无法正常显示 PHP 在对应的pdd函数中设置字符集为utf8mb4 Mysql emoji数…...

OpenClaw数据安全实践:Qwen3-32B+RTX4090D本地化处理敏感财报

OpenClaw数据安全实践&#xff1a;Qwen3-32BRTX4090D本地化处理敏感财报 1. 为什么金融从业者需要本地化AI处理 去年我在帮一家私募基金做季度财报分析时&#xff0c;遇到了一个尴尬场景&#xff1a;当我把客户PDF财报上传到某公有云AI平台提取关键指标后&#xff0c;第二天就…...

Sqoop网络传输优化指南:从数据传输机制到带宽调优实战

Sqoop网络传输优化指南&#xff1a;从数据传输机制到带宽调优实战1. 引言&#xff1a;数据迁移的命脉在于网络2. Sqoop数据传输机制深度解析2.1 架构设计&#xff1a;基于MapReduce的并行传输2.2 导入数据的工作机制2.3 导出数据的工作机制2.4 网络交互的核心模式3. 优化网络带…...

Kafka连接报错?手把手教你解决localhost:9092不可用问题(附真实案例)

Kafka连接报错&#xff1f;手把手教你解决localhost:9092不可用问题&#xff08;附真实案例&#xff09; 当你第一次尝试在本地环境运行Kafka生产者时&#xff0c;看到"Connection to node -1 (localhost/127.0.0.1:9092) could not be established"这样的报错信息&a…...

人血小板裂解液(hPL)与细胞治疗生产工具解析:Sexton产品应用综述【曼博生物官方代理Sexton】

摘要&#xff1a;人血小板裂解液&#xff08;hPL&#xff09;作为无动物源培养补充剂&#xff0c;正在逐步替代FBS应用于细胞与基因治疗&#xff08;CGT&#xff09;领域。本文结合相关产品体系&#xff0c;对hPL及细胞冻存与灌装系统进行系统梳理。 关键词&#xff1a;人血小板…...

保姆级教程:用seqtk、bwa和bedtools从零绘制GC-depth图,诊断测序污染

从零构建GC-depth分析全流程&#xff1a;手把手教你诊断测序数据污染 刚拿到测序数据的生物信息学新手&#xff0c;常常会面临一个灵魂拷问&#xff1a;我的数据干净吗&#xff1f;GC-depth分析就像给测序数据做"体检"&#xff0c;通过一张图就能快速发现细菌污染、样…...

解码 DINO 核心:三大创新如何重塑端到端目标检测

1. 从DETR到DINO&#xff1a;目标检测的范式革命 记得我第一次用Faster R-CNN做目标检测时&#xff0c;光是调整锚框尺寸就花了整整三天。这种传统检测方法就像用老式打字机写代码——每个环节都需要手工微调。直到2020年DETR横空出世&#xff0c;才让我意识到目标检测还能这么…...

科研助手实战:OpenClaw驱动Qwen3.5-4B-Claude整理文献

科研助手实战&#xff1a;OpenClaw驱动Qwen3.5-4B-Claude整理文献 1. 为什么需要AI文献助手&#xff1f; 作为每周需要阅读数十篇论文的科研狗&#xff0c;我长期被三个问题困扰&#xff1a;一是PDF文献堆积如山却找不到关键结论&#xff1b;二是不同研究间的对比分析需要手动…...

AI 自动获客系统正在重构企业线索获取方式

在数字化营销持续深化的当下&#xff0c;企业获客成本逐年攀升&#xff0c;传统 “广撒网” 的线索获取模式早已难以为继。销售团队大量时间耗费在无效线索筛选上&#xff0c;真正用于精准跟进、成交的时间不足两成&#xff0c;人力与投入的失衡让企业陷入增长内耗。而 AI 自动…...

uniapp中如何用lottie-miniprogram加载json动画?5分钟搞定炫酷效果

Uniapp中5分钟集成Lottie动画&#xff1a;从原理到实战的完整指南 在移动应用开发中&#xff0c;精美的动画效果往往能显著提升用户体验。对于Uniapp开发者来说&#xff0c;Lottie-miniprogram提供了一种高效的方式&#xff0c;可以直接加载设计师导出的JSON动画文件&#xff0…...

如何让实验室管理“更简单”?——King’s LIMS以灵活与智能,重构高效运营新范式

在日常实验室管理中&#xff0c;流程繁琐、数据难溯源、报告生成低效、多场景管控混乱等问题&#xff0c;常成为拖慢运营节奏、抬升运维成本的“隐形阻力”。要打破管理困局、实现轻量化高效运维&#xff0c;选对数字化工具是关键。然而&#xff0c;在选择LIMS的过程中&#xf…...