嵌入式(捌,续)

C语言(补):

输入输出缓冲机制

概述:

缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,

这些存储空间用来缓冲输入 或者输出的数据,这部分预留的空间叫做缓冲区。缓冲区根据其对应的是

输入设备还是输出设备,分为输入缓冲区和输出缓冲区。

为什么要有缓冲区

1)减少IO设备的操作

2)提高计算机的运行速度。

比如:我们从磁盘里读取信息,先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓

冲区的数据取完后再去磁盘中读取,这样就减少磁盘的读写次数,再加上计算机对缓冲区的操作大大

快于磁盘的操作,故应用缓冲区可大大提高计算机的运行速度

缓冲区的类型

全缓冲:当填满缓冲区之后,才会进行实际IO操作。 比如 对磁盘文件的读写。 —window 全缓冲大小

4096字节 linux 全缓冲大小 1024字节

行缓冲:当在输入和输出中遇到换行符时,执行真正的IO操作,也就是冲刷缓冲区的数据。比如键盘

输入数据

不带缓冲:也就是不进行缓冲,标准出错情况stderr是典型代表,这使得出错信息可以直接尽快地显示

出来。

引发缓冲区的刷新

1、遇到换行符\n

2、缓冲区满(溢出)

3、执行fflush(stdout),手动刷新缓冲区

原理实现

在这里插入图片描述

解释:输入输出缓冲机制是一种技术,‌旨在提高数据传输的效率和稳定性。‌这种机制通过在输入输出过程中引入缓冲区,‌使得数据不是直接从源传输到目标,‌而是先存储在缓冲区中,‌然后再从缓冲区中读取数据传输到目标。‌

案例:

需求:将一张BMP图片显示到开发板的LCD屏幕上

说明:

屏幕显示:BGR

图片显示:RGB

实现:RGB --> BGR

B:右移0个字节,也就是移动0位 B >> 0

R:右移2个字节,也就是移动16位 R >> 16

ush(stdout),手动刷新缓冲区

原理实现

[外链图片转存中…(img-axLhK3pf-1721907207649)]

解释:输入输出缓冲机制是一种技术,‌旨在提高数据传输的效率和稳定性。‌这种机制通过在输入输出过程中引入缓冲区,‌使得数据不是直接从源传输到目标,‌而是先存储在缓冲区中,‌然后再从缓冲区中读取数据传输到目标。‌

案例:

需求:将一张BMP图片显示到开发板的LCD屏幕上

说明:

屏幕显示:BGR

图片显示:RGB

实现:RGB --> BGR

B:右移0个字节,也就是移动0位 B >> 0

R:右移2个字节,也就是移动16位 R >> 16

G:右移1个字节,也就是移动8位 G >> 8

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值