6 标准IO fopen/fclose

来源:互联网 发布:mac如何保存网页 编辑:程序博客网 时间:2024/05/16 15:52

1. 标准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

以附加的方式打开只写文件。若文件不存在,则会建立该文件,

如果文件存在,写入的数据会被加到文件尾,即文件原先的内容

会被保留。

a+或a+b或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库已经为该流自动分配了一个缓存,则释放此缓存。

0 0