Appearance
fopen()
功能:打开一个 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()。