欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux系统下的fopen函数

程序员文章站 2024-01-21 21:04:52
...
        在文件 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 来指示错误原因。
相关标签: linux应用 linux