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

2019-07-12 14:23发布

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