feof:
检测文件是否到达结尾
ferroe:
检测文件是否发生错误
标准IO之文件定位
fseek()
SEEK_END 指向最后一个字节的后一个,继续加,写文件,会将文件扩大
ftell()
获取文件大小
pos指向最后一个字节的下一位,如果需要进行复制操作,需要将pos复位到第一个字节
rewind()
文件复位,等效于 fseek(stream, 0, SEEK_END)
缓冲区:为了匹配高速和低速设备(内核里)
文件IO
操作系统为了方便用户使用系统功能而对外提供的一组系统函数,称之为系统调用。其中有一个 文件IO,一般都是对设备文件操作,当然也可以对普通文件进行操作。
文件IO 是一个基于Linux内核的没有缓存的IO机制
特性:
1、没有缓存区
2、操作对象不再是流(FILE*),而是文件描述符(int 0-1023)
3、文件描述符
很小的非负整数 int 0 - 1023
内核每打开一个文件就会获得一个文件描述符
unistd.h (posix 标准库)更靠近内核
stdio.h(c 库)
步骤:
open
read / write
close
函数接口:
open
打开或创建一个文件
pathname 文件名
flags 标签
中间用 | 隔开
mode 读写执行权限 (0666 / 0777)
返回值:
成功 返回文件描述符(fd)
失败 返回 -1
write
通过文件描述符向文件中输入字符串
fd 文件描述符
buf 要写入文件的字符串的首地址
count 写入字符的个数(填写buf的有效长度)
返回值:
成功 返回实际写入的个数(0不代表错误)
失败 返回 -1
close();
read
通过文件描述符读取文件中的数据
fd 文件描述符
buf 存放数据空间的首地址
count 要读到数据的个数(可比实际的内容略大)
返回值:
成功 返回读到数据的个数
失败 返回-1
读到文件结尾 返回0
lseek
定位光标的位置
fd 文件描述符
offset 偏移量 正:向后偏移 负:向前偏移 零:不偏移
whence SEEK_SET SEEK_CUR SEEK_END
返回值:
成功 返回偏移量
失败 返回-1