一、缓冲区的解析:
1.1论点的引入:
- 在Linux中有一个接口sleep,可以使得C/C++程序休眠一段指定的时间。他需要依赖的头文件是<unistd.h>,注意这个接口为Linux私有。
- usleep接口类似sleep接口,但是单位为微秒。
- 下面两份代码,会在不同时间节点打印hello,但是两份代码的差别微乎其微,是什么原因印象的呢?
1.2原因解析:默认缓冲区:
- 在C/C++中,会针对标准输出流,为我们提供默认的缓冲区,这个缓冲区通常通常只有几KB大小。
- printf的输出是行缓冲,就意味着输出的内容会被缓存在内存中。这种行为可以确保当你使用printf连续输出多个字符串时,它们会被一次性输出而不是一个字符一个字符地输出,从而提高效率。
- 因此,就会导致以上第二种情况。即程序先休眠2秒,然后才会打印hello字符串。
- 如果想要先打印hello字符串再休眠,就需要“刷新行缓冲区”。
- 正常情况下刷新行缓冲区的方法有三种:缓冲区已满、遇到换行符'\n'、程序正常结束。
- 像以上第一种情况就是使用'\n'刷新缓冲区的。
1.3强制刷新行缓冲区:
- 使用fflush接口,可以强制刷新行缓冲区。这样就可以实现,先打印hello再休眠2秒的操作。
1.4对回车换行的解析:
- ‘\n’我们称为回车换行,回车换行=回车+换行,他会刷新缓冲区。
- ‘\r’我们称为换行,不会刷新缓冲区。
二、字符设备——显示器和键盘:
- 通常情况下,显示器显式一个整数,是真的显式一个整形数字吗?答案是:不是!!!
- 显示器是字符设备,他会通过函数将整形数字切割成一个个数字,然后转换为字符数字,一个个显示到显示器上。
- 键盘也是一样,将读取到的一个个字符数字转换为整形数字后,组合,存放到整形变量中。
三、进度条实现
- 当前版本,只完成外在不完成内在,相当于徒有其形,目的是帮助理解逻辑。
- 不会放视频,截两张图给大伙看看。
- 进度条每涨1%,多打印一个#再[]中,另外使用百分比显示当前进度,最后一个方括号是一个动画演示,防止进度条卡住时,我们不知道是依旧在加载还是真的卡住了。