标准c库的fopen函数

        在文件 I/O 中,使用 open() 系统调用打开或创建文件,而在标准 I/O 中,我们将使用库函数
fopen() 打开或创建文件, fopen()函数原型如下所示:
#include <stdio.h>
FILE *fopen(const char *path, const char *mode);
        使用该函数需要包含头文件 stdio.h
        函数参数和返回值含义如下:
        path 参数 path 指向文件路径,可以是绝对路径、也可以是相对路径。
        mode 参数 mode 指定了对该文件的读写权限,是一个字符串,稍后介绍。
        返回值:调用成功返回一个指向 FILE 类型对象的指针( FILE * ),该指针与打开或创建的文件相关联,后续的标准 I/O 操作将围绕 FILE 指针进行。如果失败则返回 NULL ,并设置 errno 以指示错误原因。参数 mode 字符串类型,可取值为如下值之一:

mode

说明

对应于open()函数的 flags 参数取值

r

以只读方式打开文件。

O_RDONLY

r+

以可读、可写方式打开文件。

O_RDWR

w

以只写方式打开文件,如果参数 path 指定的文件存在,将文件长度截断为 0;如果指定文件不存在则创建该文件。

O_WRONLY | O_CREAT | O_TRUNC

w+

以可读、可写方式打开文件,如果参数 path 指定的文件存在,将文件长度截断为 0;如果指定文件不存在则创建该文件。

O_RDWR | O_CREAT | O_TRUNC

a

以只写方式打开文件,打开以进行追加内容(在文件末尾写入),如果文件不存在则创建该文件。

O_WRONLY | O_CREAT |O_APPEND

a+

以可读、可写方式打开文件,以追加方式写入(在文件末尾写入),如果文件不存在则创建该文件。

O_RDWR | O_CREAT | O_APPEND

        由 fopen() 函数原型可知, fopen() 只有两个参数 path mode ,不同于 open() 系统调用,它并没有任何一个参数来指定新建文件的权限。当参数 mode 取值为 "w" "w+" "a" "a+" 之一时,如果参数 path 指定的文件不存在,则会创建该文件,那么新的文件的权限是如何确定的呢?
虽然调用 fopen() 函数新建文件时无法手动指定文件的权限,但却有一个默认值:
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH (0666)
        使用示例
        使用只读方式打开文件: fopen(path, "r");
        使用可读、可写方式打开文件: fopen(path, "r+");
        使用只写方式打开文件,并将文件长度截断为 0 ,如果文件不存在则创建该文件:
fopen(path, "w");
fclose()关闭文件
        调用 fclose() 库函数可以关闭一个由 fopen() 打开的文件,其函数原型如下所示:
#include <stdio.h>
int fclose(FILE *stream);
        参数 stream FILE 类型指针,调用成功返回 0 ;失败将返回 EOF (也就是 -1 ),并且会设置 errno 来指示错误原因。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值