# C输入输出IO
<font style="background:yellow">
1
# 📑 目录
- ⭐️缓冲区
- Linux系统API、Windows系统API、C语言库函数『对比』
fopen
fseek
//freopen("in.in", "r", stdin);
1
2
3
2
3
# 01.流与缓冲区的理解 (opens new window)
关于流和缓冲区的理解
# (1)流的概念
- 1、流是一个 过程 ,一个 动态 的概念
(可以把流想象成水在水管中流动的过程,想象成商品快递运送的过程。cin和cout就是 执行 流这个过程的人)
2、流 负责 操作 缓冲区,输入输出流是 操作 的 实现
- 对于输入,cin负责把输入缓冲区中的内容传递给程序;
- 对于输出,cout负责把输出缓冲区中的内容传递给屏幕。
- (cin和cout把缓冲区的数据变成流,然后 搬运 到相应的目的地。cin和cout就是个 搬运工 , 搬运的过程 就是流)
3、程序 和 流源 或 流目标 之间的桥梁
- 使得C++程序可以以 相同的方式 对待来自 键盘 的输入和来自 文件 的输入
- C++程序只检查 字节流 ,而不需要知道字节来自何方
- C++程序处理输出的方式将独立于其去向
4、输入流需要两个连接,每端各一个
文件端连接 提供了流的来源
- 程序端连接 将流的流出部分转储到程序中
- (文件端连接可以是文件,也可以是设备)
- 对输出的管理包括将 输出流 连接到 程序 以及将 输出目标 与 流 关联起来
# (2)缓冲区的概念
- 1、标准库 提供缓冲是为了减少对read和write的调用(能更高效地处理输入和输出)
- 2、用作中介的内存块,将信息从设备传输到程序或从程序传输给设备的 临时存储工具
# (3)其他的
(K&R 《The C Programming Language》P241)
引用:A stream is a source or destination of data that may be associated with a disk or other peripheral. 中文版(徐宝文等译)翻译为: 引用:流(stream)是与磁盘或其它外围设备关联的数据的源或目的地。
YouTube的话 (opens new window)
- 无缓存区,当你输出的时候,马上发送到显示器输出。
- 有缓存区的话,要等你刷星一会才会输出
# 参考资料
- 1、C语言的输入输出 (opens new window)
- 2、C++的输入和输出 (opens new window)