✔️本文主题:LINUX
✔️本文作者:蓝色学者
滚动公告条目录
一、前言
大家好久不见,今天我们利用一点缓冲区、回车换行的小知识来实现一个滚动公告条小程序
公告条效果:
二 、‘\r’ 和 ‘\n’
\r回车将光标移动到
下一行
原地\n换行将光标移动到**
当前行
**起点
在现在的操作系统中,‘\r’ 和’\n’组合成了一个新的按键——enter也就是\n+\r(先回车再移动光标到起点)
三、行缓冲区和fflsuh
①行缓冲区
在正式模拟滚动公告条之前,我们要了解一组相关概念
首先我们要求清楚,就像我们在使用输入法打字的时候,只有我们摁下回车键的时候,我们书写的内容才会输出到屏幕上,同理,计算机也有缓冲区的概念,今天我们先介绍行缓冲区
行缓冲:我们标准输入、标准输出都是采用的行缓存,也就是遇到 **
换行符
** 或者我们手动调用fflush时,才会将缓存区的东西写到对应的地方。
②fflush
我们当然希望公告条能在同一行滚动,因此我们不可以使用换行符来显示,但我们仍要输出不同的内容,所以我们使用’\r’并且通过手动刷新,来使用覆盖的原理实现滚动效果!
fflush的使用:
fflush
函数在 C 语言中用来清空输入输出缓存,强制刷新所有输出。它通常用于输出流,但是在一些情况下也可以用于输入流。如果缓存的输出没有被刷新,则它可能不会立即被写入到目标文件或设备中
③sleep
sleep函数来暂停程序的执行,以毫秒为单位指定等待时间,程序会短暂地停止这个时间。
sleep的使用:
在windows操作系统下,头文件为<windows.h>
在LINUX操作系统下,头文件为<unistd.h>
四、思路分析
要实现滚动,即让下图每一行覆盖上一行的内容(fflush实现),并控制公告滚动的速度(通过sleep或者usleep实现)
完成上述过程,最终使用for循环即可让公告不停在屏幕上移动!
五、参考代码
完整参考代码:https://github.com/FORGETSCHOLAR
到这里,本篇文章就结束了,本文仅仅抛砖引玉,大家可以制作一个更加完善的滚动公告条小程序!
如果你觉得本篇文章还不错,可以给学者一个关注,我们下次见~
版权归原作者 蓝色学者i 所有, 如有侵权,请联系我们删除。