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));  //初始化bar
    int 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

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023华数杯数学建模C题思路代码 母亲身心健康影响

C 题 母亲身心健康对婴儿成长的影响 母亲是婴儿生命中最重要的人之一&#xff0c;她不仅为婴儿提供营养物质和身体保护&#xff0c; 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况&#xff0c;如抑郁、焦虑、 压力等&#xff0c;可能会对婴儿的认知、情感、社会行…

error: #5: cannot open source input file “core_cmInstr.h“

GD32F103VET6和STM32F103VET6引脚兼容。 GD32F103VET6工程模板需要包含头文件&#xff1a;core_cmInstr.h和core_cmFunc.h&#xff0c;这个和STM32F103还是有区别的&#xff0c;否则会报错&#xff0c;如下&#xff1a; error: #5: cannot open source input file "core…

linux基本功系列之cd命令实战

文章目录 前言一. cd命令的介绍二. 语法格式及常用选项三. 参考案例总结 前言 居然发现了落下了CD命令&#xff0c;也不算落下把&#xff0c;主要是cd命令内容太少&#xff0c;撑不起一篇文章&#xff0c;今天也写一写&#xff0c;就当记个笔记吧 &#x1f3e0;个人主页&#…

静态路由综合实验

实验拓扑如下&#xff1a; 实验要求如下&#xff1a; 【1】R6为isp&#xff0c;接口IP地址均为公有地址;该设备只能配置IP地址&#xff0c;之后不能再对其进行任何配置 【2】R1~R5为局域网&#xff0c;私有IP地址192.168.1.0/24&#xff0c;请合理分配 【3】所有路由器上环回…

Django框架之路由用法

简介 路由简单的来说就是根据用户请求的 URL 链接来判断对应的处理程序&#xff0c;并返回处理结果&#xff0c;也就是 URL 与 Django 的视图建立映射关系。 Django 路由在 urls.py 配置&#xff0c;urls.py 中的每一条配置对应相应的处理方法。 Django 不同版本 urls.py 配…

java 数组的使用

数组 基本介绍 数组可以存放多个同一类型的数据&#xff0c;数组也是一种数据类型&#xff0c;是引用类型。 即&#xff1a;数组就是一组数据。 数组的使用 1、数组的定义 方法一 -> 单独声明 数据类型[] 数组名 new 数据类型[大小] 说明&#xff1a;int[] a new int…

轻量级目标检测模型NanoDet-Plus微调、部署(保姆级教学)

前言 NanoDet-Plus是超快速、高精度的轻量级无锚物体检测模型&#xff0c;github项目文件。可以在移动设备上实时检测。其主要特点是 超轻量&#xff1a;模型文件仅980KB(INT8)、1.8MB(FP16)超快&#xff1a;移动ARM CPU上97fps&#xff08;10.23ms&#xff09;高精度&#xf…

预测狗狗币价格 -- 机器学习项目基础篇(5)

Dogecoin(狗狗币)是一种加密货币&#xff0c;就像以太坊或比特币一样-尽管它与这两种着名的硬币完全不同。Dogecoin最初在某种程度上是作为加密爱好者的一个笑话&#xff0c;并从一个以前众所周知的模因中取了它的名字。 在本文中&#xff0c;我们将实现一个机器学习模型&#…

Kubernetes高可用集群二进制部署(五)kubelet、kube-proxy、Calico、CoreDNS

Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署&#xff08;一&#xff09;主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署&#xff08;二&#xff09;ETCD集群部署 Kubernetes高可用集群二进制部署&#xff08;三&#xff09;部署…

高校陆续拥抱chatgpt,人工智能会给学术带来什么变化会有什么影响

在当今信息爆炸的时代&#xff0c;人工智能在各行各业都发挥着越来越重要的作用&#xff0c;高校教育领域也不例外。最近&#xff0c;越来越多的高校开始陆续拥抱chatgpt&#xff08;Chatbot GPT&#xff09;这一人工智能技术&#xff0c;在学术领域会带来了怎样的变化与影响&a…

SQL-进阶

mysql --local-infile -u root -pset global local_infile 1;load data local infile 目录 into able 表名 fields terminated by , lines terminated by \n;

【数据结构(C++版)】哈希表(散列表)

目录 1. 散列表的概念 2. 散列函数的构造方法 2.1 直接定址法 2.2 除留余数法 2.3 数字分析法 2.4 平方取中法 3. 处理冲突的方法 3.1 开放定址法 3.1.1 线性探测法 3.1.2 平方探测法 3.1.3 双散列法 3.1.4 伪随机序列法 3.2 拉链法&#xff08;链接法&#xff0…

网络知识介绍

一、TCP 传输控制协议&#xff0c;Transmission Control Protocol。 面向广域网的通信协议&#xff0c;跨域多个网络通信时&#xff0c;为两个通信端点之间提供一条具有如下特点的通信方式&#xff1a; 基于流、面向连接、可靠通信方式、网络状况不佳时尽量降低系统由于重传带…

车载开发智能座舱技术——【Surface渲染流程】

SurfaceFlinger智能座舱技术是一种车载开发中的创新技术&#xff0c;它能够实现高效的图形渲染和多媒体处理&#xff0c;为驾驶员和乘客提供更好的车内体验。本文将介绍SurfaceFlinger智能座舱技术的概念和原理&#xff0c;并详细解析Surface的渲染流程和相关代码示例。 一、S…

无头单链表,有完整测试程序

&#x1f35f;无头单链表 &#x1f47b;无头单链表的所有结点都存储有效信息 &#x1f47b;无头单链表相对带头单链表&#xff0c;在有些涉及更改头节点的函数上需要传二级指针 &#x1f35f;头文件list.h #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #includ…

企业内网终端安全无客户端准入控制技术实践

终端无代理/无客户端准入控制技术因其良好的用户体验而倍受创新企业的青睐。无代理/无客户端准入控制技术&#xff0c;顾名思义&#xff0c;是一种在网络中对终端实施访问控制的方法&#xff0c;无需依赖特定的客户端软件。 不同于银行、医院等传统行业的终端准入控制需求&…

识别万物扫一扫,遇到不认识的物品扫就完事

随着科技的不断发展&#xff0c;移动设备已经成为人们日常生活中必不可少的工具。移动设备上的扫一扫功能&#xff0c;可以通过摄像头扫描物品&#xff0c;识别并获取相关信息&#xff0c;为人们的生活带来了很大的便利。本文将探讨识别万物扫一扫的使用及原理。 识别万物的使用…

概念辨析 | SAR运动补偿和自聚焦技术:深入探索雷达图像

注1:本文系“概念辨析”系列之一,致力于简洁清晰地解释、对比复杂而专业的概念。本次辨析的概念是:合成孔径雷达(SAR)的运动补偿和自聚焦技术。 SAR运动补偿和自聚焦技术:深入探索雷达图像 Synthetic Aperture Radar (SAR) 1 背景介绍 合成孔径雷达(Synthetic Aperture R…

iPhone 8透明屏的透明度高吗?

iPhone 8是苹果公司于2017年推出的一款智能手机&#xff0c;它采用了全新的设计和技术&#xff0c;其中一个亮点就是透明屏。 透明屏是指屏幕具有透明度&#xff0c;可以透过屏幕看到背后的物体。 iPhone 8的透明屏采用了最新的OLED技术&#xff0c;这种技术可以实现更高的对比…

RunnerGo五种压测模式你会配置吗

我们在做性能测试时需要根据性能需求配置不同的压测模式如&#xff1a;阶梯模式。使用jmeter时我们需要安装插件来配置测试模式&#xff0c;为了方便用户使用&#xff0c;RunnerGo内嵌了压测模式这一选项&#xff0c;今天给大家介绍一下RunnerGo的几种压测模式和怎么根据性能需…