Linux软件编程:标准IO(ASCII文件)
- Linux系统中一切皆文件
- IO操作对象是文件
一、文件
(一)一段数据的集合
(二)文件通常存放在外存中,掉电后数据不会丢失
(三)分类(文件IO)
- b(block,块设备文件):按块扫描信息的文件。通常存储类型的设备称块设备文件
- c(character,字符设备文件):按字符扫描信息的文件。一般设备通常为字符设备文件
- d(directory,目录文件,目录IO):目录文件,存放文件的文件夹
- -(普通文件,标准IO):存放信息的文件
- l(link,链接文件,链接IO):操作文件等价于操作文件指向的文件
- s(socket,套接字文件):用来进程间通信
- p (pipe,管道文件):用来进程间通信
二、标准IO
(一)通常用来操作普通文件
(二)普通文件类型
1.ASCII码文件(程序、文本文件):文件中的所有内容均为能够在屏幕上显示的ASCII码字符
2.二进制文件(ASCII码文件、图片、音视频、压缩包):文件中的所有内容均以数据对应的二进制的形式存放(包括一些不能在界面显示的文件)
(三)标准IO的接口
1.fopen/fclose
2.fgetc/fputc
3.fgets/fputs
4.fscanf/fprintf
5.fread/fwrite
6.fseek/rewind/ftell
7.操作步骤
①打开文件
②读写文件
③关闭文件
(四)文件的打开
1.已经打开的三个特殊流
stdin:标准输入流(scanf、gets、getchar)
stdout:标准输出流(printf、puts、putchar)
stderr:标准出错流(perror)
2.函数接口
①fopen
②fclose
③fputc(putchar()等价于fputc(ch,stdout))
④fgetc(ch=getchar()等价于ch=fgets(stdin))
⑥fputs(fpputs不会多打印\n字符,puts会多打印一个\n字符)
⑦fgets(gets会去掉从终端接收的\n字符,fgets不会去掉从终端接收的\n字符)
⑧fscanf
⑨fprintf
(四)标准IO的缓存
1.标准IO缓存
- 标准IO是一种有缓存的IO
- 效率高
- 实时性差
2.缓存的类型
①全缓存(4k):与文件建立的缓存(让内核操作文件)
a.缓存区满4k刷新
b.fflush函数强制刷新
c.fclose或者程序关闭刷新
②行缓存(1k):与终端建立的缓存(让内核操作终端)
a.遇到\n刷新
b.缓存区满1k刷新
c.fflush函数强制刷新
d.fclose或者程序关闭刷新
③不缓存(0k):不缓存立即刷新。出错处理或者人机交互一般使用不缓存(stderr)
三、man手册(man 章节号 搜索内容)
1.标准命令
2.系统调用
3.库函数
4.设备说明
5.文件格式
6.娱乐
7.杂项
8.管理员命令