【Linux 进度条小程序】缓冲区+回车换行

文章目录

  • 回车与换行
  • 缓冲区
    • 举个栗子
    • fflush函数
    • 倒计时小程序
    • 进度条小程序

回车与换行

回车和换行是不同的两个概念
回车\r 使光标回到本行行首。
换行\n使光标下移一格。

一般我们的键盘上的Enter键是回加换行键
在c语言中
\n 表示回车+换行 效果和Enter键一样

PixPin_2023-12-06_19-44-59.gif
\r 使光标回到本行行首。
PixPin_2023-12-06_19-41-05.gif

缓冲区

缓冲区buffer: 它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区,显然缓冲区是具有一定大小的。
缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。

举个栗子

PixPin_2023-12-06_19-48-13.gif
PixPin_2023-12-06_19-49-18.gif
第一个例子是先打印Hello World 在等待两秒结束程序
第二个例子比第一个例子少一个\n,则是先等待两秒后在打印Hello World

  • 这两个例子就可以用来证明缓冲区的存在,在第二个例子中,printf函数肯定先执行,然后再执行sleep函数。
  • 但是printf先执行,并不是执行完就打印到显示器上。而是先将打印的内容存放到缓冲区中,等到程序运行结束才打印到显示器中
  • 第一个例子是因为当缓冲区中遇到’\n’或是缓冲区被写满就会被打印出来。不会等到程序结束才打印。

fflush函数

刷新缓冲区
在上面第二个例子中除了加\n可以实现 先打印Hello World 再等待两秒结束程序;还可以使用fflush函数刷新缓冲区完成

PixPin_2023-12-06_20-03-00.gif

倒计时小程序

了解了上面的三个概念后可以简单的实现一个倒计时小程序
PixPin_2023-12-06_20-13-02.gif

#include<stdio.h>                                                      
#include<unistd.h>    
int main()    
{    int cout = 9;    while(cout >= 0)    {    printf("%d\r",cout--);    fflush(stdout);    sleep(1);    }    return 0;    
} 

如果没有fflush函数刷新缓冲区,那么打印的结果会一直存到缓冲区中,程序结束了什么也看不到

进度条小程序

PixPin_2023-12-06_20-35-38.gif

#include<stdio.h>    
#include<unistd.h>    
#include <string.h>    
int main()    
{    int i = 0;    char buff[102];    memset(buff,0,sizeof(buff));    while(i <= 100 )    {                                                                                                                                              printf("[%-100s][%d%%]\r",buff,i);    fflush(stdout);    buff[i++] = '#';    usleep(100000);    }    printf("\n");    return 0;    
}

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

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

相关文章

代码随想Day24 | 回溯法模板、77. 组合

理论基础 回溯法和递归不可分割&#xff0c;回溯法是一种穷举的方法&#xff0c;通常需要剪枝来降低复杂度。回溯法有一个选择并退回的过程&#xff0c;可以抽象为树结构&#xff0c;回溯法的模板如下&#xff1a; void backtracking(参数) {if (终止条件) {存放结果;return;}…

Java动态代理实现与原理详细分析

Java动态代理实现与原理详细分析 关于Java中的动态代理&#xff0c;我们首先需要了解的是一种常用的设计模式–代理模式&#xff0c;而对于代理&#xff0c;根据创建代理类的 时间点&#xff0c;又可以分为静态代理和动态代理。 1、代理模式 代理模式是常用的java设计模式&…

从cot到agent的survey视频笔记

参考视频&#xff1a; 从CoT到Agent的列车即将发车&#xff0c;请各位旅客尽快上车 姚杳 由于总结不易&#xff0c;所以暂时都是粉丝可见&#xff0c;如果总结的不好见谅。 核心理解点总结&#xff1a; paradigm shifts of cot when cot&#xff1f;推理多的任务时 how cot…

是否曾经想过关闭Microsoft账户,那么你来对地方了

本文介绍如何使用web浏览器删除Microsoft账户。 如果你删除Microsoft帐户&#xff0c;你将无法访问所有Microsoft应用程序和服务&#xff0c;包括Xbox网络。 如何永久删除Microsoft帐户 完全关闭你的Microsoft帐户的唯一方法是访问Microsoft网站。在开始之前&#xff0c;你应…

ssh远程连接服务器

目录 一、远程连接服务器简介 1、什么是远程连接服务器 2、远程连接服务器的功能 3、远程连接服务器的类型&#xff08;以登录的连接界面来分类&#xff09; 4、文字接口连接服务器 二、连接加密技术简介 安全套接层&#xff1a; 1、版本协商阶段 2、密钥和算法协商阶…

初识MQ——消息队列技术选型

文章目录 同步和异步通讯同步通讯异步通讯 技术对比 同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c…

解决vue3使用iconpark控制台预警提示问题

前言 最近在项目中使用 iconpark-icon 来管理图标&#xff0c;一切都很顺利&#xff0c;引入链接后&#xff0c;图标正常显示&#xff0c;没有报错。但是控制台却发出了预警信息。 [Vue warn]: Failed to resolve component: iconpark-icon If this is a native custom eleme…

redis------在java中操作redis

Redis&#xff08;非关系型数据库&#xff09;简介 redis下载 点击即可进入redis中文网进行下载 百度网盘windows版本 提取码 DMH6 redis主要特点 基于内存存储&#xff0c;读写性能高 适合存储热点数据&#xff08;热点商品、资讯、新闻&#xff09; 企业应用广泛 redis不同…

JAVA IO:NIO

1.阻塞 IO 模型 ​ 最传统的一种 IO 模型&#xff0c;即在读写数据过程中会发生阻塞现象。当用户线程发出 IO 请求之后&#xff0c;内核会去查看数据是否就绪&#xff0c;如果没有就绪就会等待数据就绪&#xff0c;而用户线程就会处于阻塞状态&#xff0c;用户线程交出 CPU。当…

你敢信!贪吃蛇游戏居然能插入到富文本编辑器里!

所有的大人都曾经是小孩子&#xff0c;虽然&#xff0c;只有少数的人记得。 ——《小王子》 引言 突然想起来前段时间看过的对半同学写的贪吃蛇游戏&#xff0c;据说对半同学只花了一个小时就写出来了。 《canvas 300行代码实现一个贪吃蛇 》 当时我正躺在床上刷手机&#x…

数据结构——链式二叉树

前言&#xff1a;哈喽小伙伴们&#xff0c;上篇文章我们讲述了一个特殊的二叉树——使用数组实现的堆的基本知识之后呢&#xff0c;从这篇文章开始&#xff0c;我们就正式进入普通二叉树的介绍啦&#xff0c;二叉树真正的难点——递归&#xff0c;即将来临&#xff0c;小伙伴们…

unity旋转选中效果

代码和预制体 函数PlayAnim&#xff08;&#xff09;中的角度要根据按钮数量手动填好 using System; using DG.Tweening; using DG.Tweening.Core; using DG.Tweening.Plugins.Options; using UnityEngine;// Token: 0x0200001B RID: 27 public class BtnParentScript : Base…

QT5.4.1无法打开文件

问题描述&#xff1a;起初是在QT代码中运行打开文件代码&#xff1a; QString gFilename QFileDialog::getOpenFileName(this,"open File",path,"*", nullptr,QFileDialog::DontUseNativeDialog);时&#xff0c;出现了堵塞情况&#xff0c;经过多次实验一…

海鹰数据虾皮:为Shopee卖家提供的完美数据分析工具

在如今的电子商务领域中&#xff0c;如何更好地了解市场动态、优化商品策略以提高运营效果成为了卖家们关注的重要问题。而海鹰数据&#xff08;Haiying Data&#xff09;作为一款专为Shopee平台设计的数据分析工具&#xff0c;为卖家们提供了市场趋势、商品分析、关键词优化、…

改善男性生理健康,缓解前列腺问题

前列腺是男性生殖系统中非常重要的一部分&#xff0c;它对男性的生理健康都着至关重要的作用。但是随着年龄的增长&#xff0c;前列腺问题也越来越普遍&#xff0c;给男性带来了很大的困扰。前列宝是Mission Hill推出的一款番茄红素多效复合胶囊&#xff0c;主要针对男性前列腺…

11 款顶级的免费 iPhone 数据恢复软件

iPhone 拥有巨大的存储容量。您可以在 iPhone 设备上存储图像、文档和视频等数据。有时&#xff0c;您的 iPhone 会发生许多意外事件&#xff0c;例如意外删除&#xff0c;从而导致数据丢失。这里有 11 个最好的免费 iPhone 数据恢复软件&#xff0c;您可以免费下载&#xff0c…

喜报!MIAOYUN入选成都高新区“瞪羚企业”

近日&#xff0c;成都高新区科技创新局公示了《2022年领先科技园区政策拟支持企业&#xff08;机构&#xff09;名单&#xff08;第二批次&#xff09;》&#xff0c;即最新一批的高新区“瞪羚企业”名单。成都元来云志科技有限公司&#xff08;简称“MIAOYUN”&#xff09;以其…

JVM 类加载机制(七)

1.加载&#xff0c;验证&#xff0c;准备&#xff0c;解析&#xff0c;初始化 ​ JVM 类加载机制分为五个部分&#xff1a;加载&#xff0c;验证&#xff0c;准备&#xff0c;解析&#xff0c;初始化&#xff0c;下面我们就分别来看一下这五个过程。 1.1. 加载 ​ 加载是类加…

Spring Cloud Stream 4.0.4 rabbitmq 发送消息多function

使用 idea 创建 Springboot 项目 添加 Spring cloud stream 和 rabbitmq 依赖 pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchem…

学生信息管理系统

摘 要 学生成绩管理系统是典型的信息管理系统(MIS)&#xff0c;其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。经过分析&#xff0c;我们使用Microsoft公司的C语言开发工具&#xff0c;将与C语言技术与数据库SQL2008相结合进行设计。首先&#xff0c;…