linux下的一个小程序--模拟进度条

智能车竞赛新手必看:用AD21从零画一块英飞凌TC264核心板(附开源PCB文件) 本文详细介绍了使用Altium Designer 21(AD21)从零开始设计英飞凌TC264核心板的完整流程,涵盖原理图绘制、PCB布线到最终DRC检查的全过程。针对智能车竞赛新手,提供了实用的硬件设计技巧和开源PCB文件,帮助快速掌握TC264核心板开发。 阅读详情

背景知识

1.回车换行

在生活中,我们不是很清楚回车换行的区别,只以为是从一行换到下一行,认为这是一个概念。其实在计算机中,回车和换行是两个东西

回车是指跳回这一行的行首   \r  

换行是指跳到下一行,列位置不变 \n

 所以计算机在换行的时候是先换行再回车的

2.sleep 和usleep

函数名: sleep
  头文件: #include <unistd.h>  // 在gcc编译器中,使用的头文件因gcc版本的不同而不同
  功  能: 执行挂起指定的秒数

函数名: usleep
  头文件: #include <unistd.h>
  功  能: usleep功能把进程挂起一段时间, 单位是微秒(百万分之一秒)

时钟换算:
  微秒,时间单位,符号us(英语:microsecond ).
  1微秒等于百万分之一秒(10的负6 次方秒)
  0.000 001 微秒 = 1皮秒
  0.001 微秒 = 1纳秒
  1,000 微秒 = 1毫秒
  1,000,000 微秒 = 1秒
  1s = 1000ms
  1ms = 1000μs
  1μs = 1000ns
  1ns = 1000ps
  1秒(s) = 1000 毫秒(ms) = 1,000,000 微秒(μs) = 1,000,000,000 纳秒(ns) = 1,000,000,000,000 皮秒(ps)

3.fflush

计算机在执行程序时会打开三个流 stdin、stdout、stderror 

fflush用于清空缓冲流,虽然一般感觉不到,但是默认printf是缓冲输出的。

fflush(stdout),使stdout清空,就会立刻输出所有在缓冲区的内容。



在printf()后使用fflush(stdout)的作用是立刻将要输出的内容输出。 
当使用printf()函数后,系统将内容存入输出缓冲区,等到时间片轮转到系统的输出程序时,将其输出。 
使用fflush(out)后,立刻清空输出缓冲区,并把缓冲区内容输出。 
例如: 
for (ctr = 1; ctr <= wait; ctr++) 
{ 
printf("."); /* print a dot */ 
fflush(stdout); /* force dot to print on buffered machines */ 
sleep(1); /* pause 1 second */ 
} 

用fflush(stdout)能使机器每输出一个.暂停一秒钟,而不会出现乱序(例如:PP。。。PP。PPP。。。等)现象。


程序分析

#include<stdio.h>
#include<unistd.h>

int main()
{
	int i = 0;
	char bar[102]; //0到100 有101个数,102位置存放'\0'
	const char *lable = "-\\|/";//每次刷新显示不一样的字符,表示进度条在加载
	bar[0] = '\0';
	while (i <= 100)
	{
		printf("[%-101s][%d%%][%c]\r",bar,i,lable[i%4]);//%-101s表示字符串靠左输出空出101格,\r回车符跳到行首
		fflush(stdout); //刷新标准输出流
		bar[i++] = '=';// = 表示进度条已经走过的部分
		bar[i] = '\0';
		usleep(50000);
	}
	printf("\n");
	return 0;
}


结果如图



    

硬方案——几种实用的恒流源电路设计方案,敬请收藏(运放、三极管在手,让你玩出多种花样) 0 引言 我们在信号测量、供电等应用场景时常会涉及到使用恒流源,以前觉得恒流源挺神奇的,研究了下实现方案,其实也没有多么高深(这里讨论的仅限于用在信号测量中的小电流恒流源设计),这里给出几个实用的恒流源电路设计方案。 1 恒流源电路设计 (1)使用三极管搭建的恒流源 (2)使用运放搭建的恒流源 (3)使用恒流二极管搭建的恒流源 pt100恒流源测温电路图_电子技术_电工之家 ... 阅读详情

相关推荐

海量数据 / Vastbase 深度研究笔记 v3.1

v3.1 重点修订:在 v3.0 审慎版基础上,新增“2026 新变量”章节,纳入 7 亿级定增、HTAP / 多模态时序数据库、G100 V3.0 Build 8 的 3CM+2DN 高可用补强、pgvector / V100 / AI 多模叙事,以及集成服务基因与标准软件 ARR 的拉扯。核心关注点是:Vastbase 能否把 openGauss 生态红利、数据库产品矩阵和行业交付能力,转化为可持续、可复购、低边际成本的标准软件收入。海量不是没有业务基本盘,也不是马上失血致死;客户越多,服务债越大。

喝醉酒的小白 570

【Linux系统编程】Linux第一个系统程序——进度条

实现Linux中的第一个系统程序——进度条

m0_70980326的博客 1164

YOLOv11 改进策略 | HWD:引入 Haar 小波变换,减少信息丢失

在卷积神经网络(CNN)中,下采样(Downsampling)是降低特征图分辨率、扩大感受野的关键操作,通常通过最大池化(MaxPool)或步长为 2 的卷积(Strided Convolution)实现。然而,这些方法在降低分辨率的同时,往往会丢失图像中的高频细节信息(如边缘、纹理)和精确的空间位置信息,这可能对后续特征提取和目标检测精度产生不利影响,尤其是对于小目标和需要精细定位的任务。

走向CTO的路上... 1791

vue3的NProgress页面加载虚拟进度条

vue3的NProgress页面加载虚拟进度条的使用方法

lfYexun的博客 965

招标文件智能解析系统开发文档

本系统是一个基于OCR与大语言模型的招标文件智能解析平台,专门用于处理和分析招标文件,自动提取关键信息并进行结构化展示。

警世龙的技术博客 1928

利用eds editor生成CANOPEN 设备eds文件

通过以上步骤,您可以根据实际设备的功能特性,自动生成一份符合CANopen协议标准的电子数据表(EDS文件),该文件可以被上位机软件或其他CANopen主站设备用于识别、配置和控制您的CANopen从站设备。使用CANopen EDS Editor生成CANOPEN设备的EDS文件是一个系统化的过程,它涉及将设备的具体技术参数和功能映射到CANopen规范定义的对象字典中。

weixin_38604759的博客 6459

Linux中第一个小程序(希望大家能多多支持)

write in front本章目标:看了上面的的概念是不是一脸蒙蔽,没有关系我们下面看一个程序来简单理解一下。 结果确实是这样的(打印了“Hellow Linux!”后停了三秒才结束) \r和\n那么同学们可能会想到既然"\r"是立马回到这一行的行首,那么如果我们打印一个数使用\r回到行首继续写一个数,那么之前写的数会不会被覆盖了呢? 运行结果: 最后发现什么都没有打印,因此可以判定\r并不会刷新行缓冲区,如果想要将每个数字打印出来我们就需要一个缓冲区刷新函数。 这里刚好就有一个就是fflush(std

xuecde的博客 261

Dinic算法的复杂度分析及证明

一般图 复杂度主要取决于dfs增广的过程。 将dfs部分的复杂度分成两部分来分析:1)修改增广路上边的流量。至多会增广mmm次,一条增广路的长度至多是nnn,所以这一部分的复杂度是O(nm)O(nm)O(nm)。2)dfs遍历时找增广路失败时经过的边。由于一旦从某条边出发找最短路失败了,我们就不会再走那条边(当前弧优化),所以这一部分的复杂度是O(m)O(m)O(m)的。故而dfs增广的复杂度是O...

这个博客已经搬到了:zhongyuwei.github.io 4392

Linux第一个小程序——进度条

缓冲区概念,换行的回车的区别,实现进度条。

qq_74276498的博客 1592

Yocto开发讲解系列 - 总目录

Yocto开发讲解系列总纲Yocto开发专栏前言

fulinux的博客 3万+

OpenClaw实战系列06:持久记忆与RAG知识库构建——让AI真正“记住”你

本文介绍了OpenClaw AI助理的持久记忆与RAG知识库构建功能。OpenClaw采用"文件即真理"的独特设计,所有记忆都以Markdown文件形式存储,支持直接编辑和Git版本管理。记忆系统分为三层:长期精炼记忆(MEMORY.md)、日常日志(按日期存储)和归档记忆。文章详细说明了环境配置步骤,包括安装必要组件、创建目录结构、设置API密钥,并提供了OpenClaw主配置文件的完整参数说明。该系统实现了跨会话、跨平台的持久化记忆,使AI助理能真正理解用户需求。

PeterPan的博客 1171

vue中 使用假的进度条数字插件:fake-progress

vue中 使用假的进度条数字插件:fake-progress

zlfjavahome的专栏 3144

Linux实现进度条小程序(包含基础版本和模拟下载过程版本)

Linux实现进度条小程序(包含基础版本和模拟下载过程版本)

Wzs040810的博客 1333

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【Linux从入门到精通】C语言模拟实现进度条小程序

在Linux下,我们安装软件时会经常看到进度条,来告知我们安装的进度。我们不妨自己模拟实现一个进度条,看看其中的细节。模拟实现进度条并不困难,但其中的细节我们又不可忽视。本篇文章会对模拟实现进度条进行详解。其中还涉及到了缓冲区和回车、换行的概念和细节解释,超级详细!

weixin_67596609的博客 1917

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【Linux】第一个小程序——进度条实现

我们之前学习过vim编辑器、gcc/g++的使用和make/makefile工具,所以今天我们就可以使用它们创建Linux上第一个小程序——进度条。在实现进度条之前我们首先需要补充两个小知识。

Renswc的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

linux系统程序--进度条小程序实现

行缓冲的触发条件当标准输出连接到终端时,默认使用行缓冲模式。在这种模式下,遇到换行符\n或者调用fflush()函数,都会促使缓冲区的内容被输出到终端。缓冲区的作用缓冲区能够减少系统调用的次数,从而提高程序的运行效率。举个例子,如果有多次printf输出操作,这些输出内容会先在缓冲区里积累,等到满足刷新条件后,再一次性输出。

nako_sayuri的博客 1054

【Linux】手把手带你写出进度条小程序

手把手带你写出进度条小程序

2501_90265152的博客 1865

【Linux】第一个小程序—进度条

回车换行、缓冲区概念,进度条的实现及调用场景模拟

关注学习C++领域,感谢陪伴,共同进步! 1307

【Linux】Linux第一个小程序 - 进度条

本文介绍了在Linux环境下实现进度条程序的方法。首先讲解了回车(\r)和换行(\n)的区别以及缓冲区的作用机制,然后通过一个倒计时示例演示了动态刷新显示的技术要点。接着详细讲解了进度条的实现过程,包括使用Makefile构建、数组越界控制、旋转光标效果等。最后展示了进度条在下载场景下的应用,通过回调函数实现多次下载进度显示。程序利用printf、fflush等函数实现动态刷新,并加入usleep控制进度节奏,完整呈现了Linux下进度条的实现原理和应用方法。

2402_86350387的博客 4316

【Linux———实现简易进度条】

本篇博客介绍了,如何在Linux下运行一个进度条小程序,以及该如何对一个进度条小程序进行美化,还包括行缓冲区的概念,以及 ” \r“ 的用法,请耐心观看!

Z15255808023的博客 921

『Linux升级路』进度条小程序

然后,我们编写了一个进度条的代码,用于模拟升级过程,并提供了实际应用的示例。缓冲区的大小可以根据需要进行调整,较大的缓冲区可以存储更多的数据,但也会占用更多的内存。这个『Linux升级路』进度条小程序可以帮助你更直观地了解升级过程的进展,让你对升级的状态有清晰的认识。在开始编写进度条小程序之前,让我们先实现一个简单的倒计时功能,以熟悉缓冲区和回车换行的使用。通过合理地使用回车和换行,我们可以实现平滑的输出效果,使进度条的更新更加流畅。现在,我们来编写进度条的代码,让我们的『Linux升级路』更加直观。

爱编程的鱼的博客 442

Linux第一个小程序-进度条 (linux第七课)

Linux第一个小程序-进度条

m0_73751295的博客 203

【Linux】Linux第一个小程序-进度条

【Linux】Linux第一个小程序-进度条的详解

m0_56069910的博客 1144

C语言实现windows,linux双版本下的进度条小程序,快来试一试吧

1. 输入输出时的缓冲区 2. 回车与换行的区别 3.windows,linux双版本下的进度条小程序实现 希望让大家感到C语言的乐趣,感谢

龟龟的博客 5852

【Linux】gdb / cgdb 调试 + 进度条

所以为什么上面程序为什么会多出一个 “0” ,也就能理解了,以为从 10 开始我们输出的是 “1” “0” ,紧接着要输出 “9” 时,光标回车到了最开始,只覆盖住了 “1” ,“0” 一直都在,所以我们需要修改输出的格式 printf("%-2d\n",countt);我们思考一下,我们给显示器输出的是一个整数1234,还是打印了一个1 2 3 4 字符,让我们以为打印的是一个整数,我们需要知道的是,在平时我们都会以为这两个使用是一样的,其实不然,新起一行的本质:先回车,再换行。

C/C++、数据结构、Linux.... 1268
上一篇: linux下vim的配置
下一篇: Linux进程描述符task_struct
喝咖啡影响睡眠
博客等级 码龄10年 15粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值