嵌入式Linux C编程学习之路(十)——标准IO fopen/fclose

  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

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

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

会被保留。

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

猜你喜欢

转载自blog.csdn.net/Alone_k/article/details/81674361
今日推荐