【LInux】简单进度条程序的编写

news/2025/3/15 11:35:39/

在进行进度条的程序的编写之前,还有几个问题需要解决。
第一个问题,先来看两段代码:
在这里插入图片描述
对比上面两段代码只有一个\n的区别。
左边的代码很简单,就是先打印,然后停顿 3 秒,程序退出。
主要问题是,右边的代码,也实先打印,然后停顿 3 秒,程序退出吗?
答案显然不是。真实看到的运行结果是,程序先停顿了 3 秒,然后打印输出完之后,程序直接退出。
至于为什么,当然是缓冲区的问题了。
根据程序从上到下顺序执行的规则,其实printf语句是比sleep先执行的,只是信息没有被立即打印出来罢了。
没有被及时打印出来的信息被送入缓冲区,而显示器设备的刷新策略一般都采用的是行刷新(碰到换行符刷新),所以信息就被“逗留”在了缓冲区。然后程序停顿 3 秒,退出程序的时候缓冲区的信息又被刷新到屏幕上。就好像出现了程序并没有按顺序执行的情况。
这里可以用fflush这个函数进行验证。fflush可以将文件缓冲区进行刷新。
在这里插入图片描述
第二个问题,什么是换行?什么是回车?
在这里插入图片描述
换行就是换到当前位置的下一行,回车就是回到当前行的起始位置。
程序中,\n表示换行,\r表示回车。
但是程序中的换行\n通常都做了特殊处理,好像是换行和回车的结合体。
最后进入进度条程序的编写(Vim)。

#include <stdio.h>
#include <string.h>
#include <unistd.h>#define NUM 52int main()
{char bar[NUM] = {0};int count = 1;const char* lable = "|/-\\";while(count <= 101){printf("[%-50s][%d%%]%c\r", bar, count - 1, lable[count%4]);fflush(stdout); // 刷新if(1 == count % 2){bar[(count + 1) / 2 - 1] = '-';}else{bar[(count + 1) / 2 - 1] = '=';}++count;usleep(100000); // 停顿间隔为 0.1 秒}printf("\n");return 0;
}

运行完成结果:
在这里插入图片描述


http://www.ppmy.cn/news/710056.html

相关文章

华为nova10Pro和华为nova9Pro有哪些区别 哪个性能更强

华为手机的Nova系列一直都比较受年轻人欢迎&#xff0c;而在近期华为nova10系列也即将要发布了&#xff0c;那么&#xff0c;华为nova10Pro和华为nova9Pro有哪些区别? 哪个性能更强?下面就一起来看看吧。 华为nova10Pro和华为nova9Pro有哪些区别 屏幕方面 这两款手机都是为…

部署 CNI网络组件

部署 flannel K8S 中 Pod 网络通信&#xff1a; ●Pod 内容器与容器之间的通信 在同一个 Pod 内的容器&#xff08;Pod 内的容器是不会跨宿主机的&#xff09;共享同一个网络命令空间&#xff0c; 相当于它们在同一台机器上一样&#xff0c;可以用 localhost 地址访问彼此的端…

gpt做PPT

在计算机科学的不同领域中&#xff0c;技术热潮必然获得扩展。在深度学习和人工智能领域&#xff0c;Transformers模型&#xff0c;尤其是OpenAI的GPT(Generative Pretraining Transformer)系列模型&#xff0c;在NLP&#xff08;自然语言处理&#xff09;领域具有重要影响力。…

出场顺序很重要下一句_年少有为一夜刷爆朋友圈:人生的出场顺序真的很重要...

心流派 生活&#xff0c;就是你我他的故事—心流派&#xff0c;探索心生活。 来源 | 洞见(ID: DJ00123987) 李荣浩的《年少有为》火了&#xff0c;朋友圈、微博、短视频……你可以看到一个又一个的单曲循环。 假如我年少有为不自卑 懂得什么是珍贵 那些美梦 没给你 我一生有愧 …

2020年度总结

2020博客之星年度总评选进行中&#xff1a;请为74号的狗子投上宝贵的一票&#xff01; 我的投票地址&#xff1a;点击为我投票 文章目录 前言一. 2020&#xff0c;从认识csdn开始1. 发布第一篇博客2. 从0到1&#xff0c;成为博客专家3. 这一年&#xff0c;创造了百篇博客 二. …

章节十六:复习与反爬虫

章节十六&#xff1a;复习与反爬虫 目录 章节十六&#xff1a;复习与反爬虫 1. 爬虫总复习 1.1 工具1.2 解析与提取(一)1.3 解析与提取(二)1.4 更厉害的请求1.5 存储1.6 更多的爬虫1.7 更强大的爬虫——框架1.8 给爬虫加上翅膀2. 爬虫进阶路线指引 2.1 解析与提取2.2 存储2.3 数…

用devc++表白_邑大表白墙 第七季 第059期

我在 [纵梦邑大] 等你 点击上方蓝字关注 我想吃 想爱 还想在一瞬间变成天上忽明忽暗的云 ♥表白1 to 180114赵同学 其实我已经喜欢你很久了,但是一直都没有胆量说出口,只能远远的望着你,你特别喜欢笑,喜欢看着你笑的样子。不知道你知不知道我喜欢你。 ♥表白2 to 大一汉…

你尝过被人误会的委屈吗?看完本篇…

人之特性--理解 关于理解&#xff0c;最重要是“愿意去理解”。 比如像我写文章这么长&#xff0c;愿意去看&#xff0c;愿意去理解的人&#xff0c;还是不多的。一段文字&#xff0c;人们是否愿意去看&#xff0c;喜欢去看&#xff0c;是需要“口感”的。 作家&#xff0c;段子…