深度讲解linux中fopen()函数

您所在的位置:网站首页 打开文件的过程 深度讲解linux中fopen()函数

深度讲解linux中fopen()函数

2023-08-28 07:13| 来源: 网络整理| 查看: 265

fopen函数

FILE * fopen(const char * path,const char * mode);

返回值   文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno 中。  

  函数说明

  参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。

mode有下列几种形态字符串:

r 打开只读文件,该文件必须存在。

r+ 打开可读写的文件,该文件必须存在。

w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

1、缓冲文件系统与非缓冲系统的区别

缓冲文件系统(fopen) :在内存为每个文件开辟一个缓存区,当执行读操作,从磁盘文件将数据读入内存缓冲区,装满后从内存缓冲区依次读取数据。写操作同理。

内存缓冲区的大小影响着实际操作外存的次数,缓冲区越大,操作外存的次数越少,执行速度快,效率高。缓冲区大小由机器而定。

借助文件结构体指针对文件管理,可读写字符串、格式化数据、二进制数据。

非缓冲文件系统(open):依赖操作系统功能对文件读写,不设文件结构体指针,只能读写二进制文件。

2、open属于低级IO,fopen属于高级IO

3、open返回文件描述符,属于用户态,读写需进行用户态与内核态切换。

   fopen返回文件指针

4、open是系统函数,不可移植

   fopen是标准C函数,可移植

5、一般用fopen打开普通文件,open打开设备文件

6、 如果顺序访问文件,fopen比open快

   如果随机访问文件,open比fopen快

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3