- 标准IO与文件IO的对应函数
文件IO: 标准IO
open fopen
close fclose
lseek fseek, rewind
read 读写函数比较多(分三类,全缓存、行缓存和无缓存)
write
2. fopen函数
FILE *fopen (const char *path, const char*mode);
返回值:FILE * 文件流指针,文件流指针类似于文件IO 中的文件描述符,定义成struct_IO_FILE,在/usr/include/libio.h ,里面包含读写缓存的首地址、大小、位置指针等。
标准的输入流:stdin 0
标准的输出流:stdout 1
标准的出错流:stderr 2
Mode:类似于文件IO的flag
r或rb
打开只读文件,该文件必须存在。
r+或r+b
打开可读写的文件,该文件必须存在。
w或wb
打开只写文件,若文件存在则文件长度清为0,即会擦些文件以
前内容。若文件不存在则建立该文件。
w+或w+b或wb+
打开可读写文件,若文件存在则文件长度清为零,即会擦些文件
以前内容。若文件不存在则建立该文件。
a或ab
以附加的方式打开只写文件。若文件不存在,则会建立该文件,
如果文件存在,写入的数据会被加到文件尾,即文件原先的内容
会被保留。
mode整理如下:
Ø b:二进制文件
Ø r: 只读方式打开文件,文件必须存在;
Ø w或a:只写方式打开文件,文件不存在则创建;
区别: w等价O_TRUNC,a等价O_APPEND;
Ø +:读写方式打开文件,文件必须存在;
例:以读写方式打开一个文件,该文件必须存在: r+
以追加方式打开一个文件,若文件不存在,则创建: a或a+
fopen创建的文件权限:0666 & (~umask)
3. fclose
int fclose(FILE *stream)
Ø fclose()调用成功返回0,失败返回EOF,并设置errno
Ø 在该文件被关闭之前,刷新缓存中的数据。如果标准I / O库已经为该流自动分配了一个缓存,则释放此缓存。