软件编程2-标准IO
一、IO基本概要
1、概念
IO(Input/Output)指计算机系统中数据的输入和输出操作,涉及与外部设备(如磁盘、网络、终端等)的数据交换。程序通过IO接口读取外部数据(Input)或将内部数据写入外部设备(Output)
2、Linux系统中一切皆是文件
3、IO操作的对象是文件
4、文件分类
- b(block,块设备文件)
- 按块扫描信息的文件,称为块设备文件。通常存储类型的设备通常为块设备文件
- 文件IO
- c(character,字符设备文件)
- 按字符扫描信息的文件,称为字符设备文件。一般设备通常为字符设备文件
- 文件IO
- d(directory,目录文件)
- 目录文件,存放文件的文件夹
- 目录IO/文件IO
- -(普通文件)
- 存放信息的文件
- 标准IO/文件IO
- l(link,链接文件)
- 操作文件等价于操作文件指向的文件
- 链接IO/文件IO
- s(socket,套接字文件)
- 用来进程间通信
- 文件IO
- p(pipe,管道文件)
- 用来进程间通信
- 文件IO
二、标准IO
1、概念
通常用来操作普通文件
2、普通文件类型
- ASCII码文件:文件中的所有内容均为能够在屏幕上显示的ASCII码字符
- 程序、文本文件均为ASCII码文件
- 二进制文件:文件中的所有内容均为数据对应的二进制形式存放(包含一些不能在界面上显示的内容)
- ASCII码文件也是二进制文件
- 图片、音视频、压缩包均为二进制文件
3、标准IO接口
1. fopen/fclose
2. fgetc/fputc
3. fgets/fputs
4. fscanf/fprintf
5. fread/fwrite
6. fseek/rewind/ftel
4、操作步骤
1. 打开文件
2. 读写文件
3. 关闭文件
5、文件的打开
(1)函数接口
(2)三种特殊的流
- stdin:标准输入流
- stdout:标准输出流
- stderr:标准出错流
- printf、puts、putchar都是通过stdout流实现在终端信息打印
- scanf、gets、getchar都是通过stdin流实现获得终端信息
- perror通过stderr流实现在终端打印出错信息
三、标准IO的缓存
1、 标准IO缓存的特点
标准IO是一种有缓存的IO、效率高、实时性差
2、缓存的类型
(1)全缓存(4k):
- 缓存区满刷新缓存
- 刷新条件:
- 缓存区满4k刷新
- fflush函数强制刷新
- fclose或者程序关闭刷新
- 与文件建立的缓存一般为全缓存
(2)行缓存(假设1k):
- 遇到\n刷新缓存区
- 刷新条件:
- 缓存区满1k刷新
- 遇到\n刷新
- fflush函数强制刷新
- fclose或者程序关闭刷新
- 与终端建立的缓存一般为行缓存(stdin、stdout均为行缓存)
(3)不缓存(0k):
- 立即刷新不缓存
- 刷新条件:
- 不缓存立即刷新
- 出错处理或者人机交互一般使用不缓存(stderr不缓存)