Skip to content
On this page

fopen()


标签:linux/api  

fopen()

C / fopen — DevDocs

功能:打开一个 stream

c
#include <stdio.h>
FILE *fopen(const char *path, const char *mode);
  • path : 打开的文件
  • mode : 打开文件的权限

成功返回一个 FILE 指针,失败的话返回 NULL,并且设置一个 errno

mode 参数

r以只读形式打开文件,流被定位于文件的起始处。
r+以读写形式打开文件,流被定位于文件的起始处。
w以只写形式打开文件,截短文件到长度为0的位置,或者创建文件,流被定位于文件的起始处。
(有则清空,无则创建)
w+以读写形式打开文件,截短文件到长度为0的位置,或者创建文件,流被定位于文件的起始处。
(有则清空,无则创建)
a追加文件,如果文件不存在则创建,流的指针将被定位在文件的最后一个字节的下一个位置。
a+读取并追加文件,如果文件不存在则创建,For glibc, the initial file position for reading is at the beginning of the file, but for Android/BSD/MacOS, the initial file position for reading is at the end of the file.

可以添加一个 b ,代表二进制文件,一般在 unix 环境下可以省略。

mode 接受的是一个字符串,它不会验证其中的内如是否是上面的几个参数,如果不是的话,它会使用头几个符合的字符。

注意点

返回的 FILE 的指针,其结构体放在堆内存空间,如果使用 static 关键字将他放到静态区,因为静态变量只初始化一次的原因,不管程序打开几个文件,都会第一个文件。因为其放在堆的空间所以具有自己的空间释放函数 fclose()

Last updated: