fopen函数

fopen函数

fopen函数

概要:

#include

FILE *fopen(const char * restrict filename,

const char * restrict mode);

描述:

该函数以参数mode指定的模式打开参数filename指定的文件,并将其与流进行关联。

文件打开时,当且仅当不引用交互式设备的情况下,流是完全缓冲的;流的错误指示符和文件末尾指示符会被清除。

调用fclose、freopen函数以及程序正常终止时,会解除流和文件的关联。

宏FOPEN_MAX表示实现可以保证的同时打开的最少文件数;ISO/IEC 9899:2018标准规定:宏FOPEN_MAX应至少为8(包括3个标准文本流stdin、stdout、stderr。)。同一文件能否同时多次打开将由实现定义。

ISO/IEC 9899:2018标准定义了该函数的安全版本fopen_s。

参数:

const char * restrict filename

指向表示文件名的字符串(如果系统支持,文件名可以包含路径。)的指针,文件名规则由实现定义。

const char * restrict mode

指向表示文件访问模式的字符串的指针。ISO/IEC 9899:2018标准支持的文件访问模式具体如下所示:

模式

描述

r

打开文本文件用于读取数据。

w

截断到零长度(如果文件已经存在的话。)或者创建新文本文件用于写入数据。

wx

创建新文本文件用于写入数据。

a

添加;打开或者创建文本文件用于在文件末尾处写入数据。

rb

打开二进制文件用于读取数据。

wb

截断到零长度(如果文件已经存在的话。)或者创建新二进制文件用于写入数据。

wbx

创建新二进制文件用于写入数据。

ab

添加;打开或者创建二进制文件用于在文件末尾处写入数据。

r+

打开文本文件用于更新数据(读取数据和写入数据)。

w+

截断到零长度(如果文件已经存在的话。)或者创建新文本文件用于更新数据。

w+x

创建新文本文件用于更新数据。

a+

添加;打开或者创建文本文件用于更新数据,在文件末尾处写入数据。

r+b 或者 rb+

打开二进制文件用于更新数据(读取数据和写入数据)。

w+b 或者 wb+

截断到零长度(如果文件已经存在的话。)或者创建新二进制文件用于更新数据。

w+bx 或者 wb+x

创建新二进制文件用于更新数据。

a+b 或者 ab+

添加;打开或者创建二进制文件用于更新数据,在文件末尾处写入数据。

如果模式参数是除上表以外的其它值,函数行为是未定义的。如果模式参数字符串以上表序列之一开始,实现可能会选择忽略剩余的字符,或者使用剩余字符来选择不同类型的文件(其中一些可能不符合ISO/IEC 9899:2018标准第7.21.2 Streams节的流属性。)。

如果文件不存在或者文件无法读取,以读取模式(字符r作为打开模式的第一个字符。)打开文件将会失败。

如果文件已经存在或者无法创建,以独占模式(字符x作为打开模式的最后一个字符。)打开文件将会失败;否则在底层系统支持独占访问的范围内,使用独占(也称非共享。)模式创建文件。

以添加模式打开文件(字符a作为打开模式的第一个字符。)会导致对文件的所有后续写入都被强制到文件的当前末尾,而不管fseek函数的调用。由于空字符填充,在一些实现中以添加模式打开二进制文件(字符b作为打开模式的第二个字符或者第三个字符。)可能最初将流的文件位置指示符定位在最后写入的数据之外。

当以更新模式(字符+作为打开模式的第二个字符或者第三个字符。)打开文件时,可以在关联的流上执行输入和输出操作。在没有调用fflush函数或者文件定位函数(例如:fseek、fsetpos、rewind函数。)的情况下,输出操作后不能立即执行输入操作;在没有调用文件定位函数的情况下,输入操作后不能立即执行输出操作,除非输入操作到达文件末尾(end-of-file)。在某些实现中,使用更新模式打开或者创建文本文件可能会打开或者创建二进制流。

返回值:

如果函数调用成功,返回一个指向控制流对象的指针;如果函数调用失败,返回一个空指针。

范例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

/*函数fopen范例*/

#include

int main(void)

{

FILE *pFile;

/*创建文件。*/

pFile = fopen("gch.txt", "w");

if(pFile != NULL)

/*向文件写入内容。*/

fputs("Practice makes perfect.", pFile);

/*关闭文件。*/

fclose(pFile);

return 0;

}

结果:

创建一个名为gch.txt、内容为Practice makes perfect.的文件。

相关内容:

fclose

关闭文件的函数。

fflush

刷新流的函数。

freopen

重新打开文件的函数。

相关文章

没钱表情包 / 第1页
microsoft365破解版

没钱表情包 / 第1页

🕒 08-08 👁️ 3244
休息的反义词标准答案(休息的反义词是什么标准答案)
365b体育最新下载地址

休息的反义词标准答案(休息的反义词是什么标准答案)

🕒 10-29 👁️ 2304
贡米是什么米?贡米和普通大米的区别有哪些?
microsoft365破解版

贡米是什么米?贡米和普通大米的区别有哪些?

🕒 12-18 👁️ 9610
帝皇书(安乐传原著小说)
日博best365下拉飞机XLCOKK

帝皇书(安乐传原著小说)

🕒 10-21 👁️ 2700
儿子和爸爸吵架了妈妈怎么处理
日博best365下拉飞机XLCOKK

儿子和爸爸吵架了妈妈怎么处理

🕒 12-17 👁️ 5165
世界唯一没蚊子的国家:冰岛人说,我们这儿连蚊子的‘户口簿’都查不到
2025男生现在学什么专业好找工作 哪些专业工资高
365b体育最新下载地址

2025男生现在学什么专业好找工作 哪些专业工资高

🕒 12-07 👁️ 1403
银行维护中什么意思一般要多久
microsoft365破解版

银行维护中什么意思一般要多久

🕒 09-21 👁️ 3059
齐次坐标及其相关内容的解释(转载)
365b体育最新下载地址

齐次坐标及其相关内容的解释(转载)

🕒 08-27 👁️ 1076