fopen、freopen、fdopen打开流

下列三个函数打开一个标准IO流。

[cpp]  view plain  copy
  1. #include <stdio.h>  
  2. FILE* fopen(const char* restrict pathname, const char* restrict type);  
  3. FILE* freopen(const char* restrict pathname, const char* restrict type, FILE* restrict fp);  
  4. FILE* fdopen(int filedes, char* type);  

三个函数,如果成功返回文件指针,失败则返回NULL。

三个函数的区别是:

fopen打开一个指定的文件。

freopen在一直指定的流上打开一个指定的文件,如若该流已经打开,则先关闭该流。如果该流已经定向,则freopen清除该

定向。此函数一般用于将一个指定的文件打开为一个预定的流:标准输入,标准输出或标准出错。

fdopen获取一个现有的文件描述符,并使一个标准的IO流与该描述符相结合。此函数常用与由创建管道和网络通信函数返回

的描述符,因为这些特殊类型的文件不能用标准IO fopen函数打开,所以我们必须先调用设备专用函数获取一个文件描述符,

然后用fdopen使一个标准IO流与该描述符相关联。


type参数指定对IO流的读写方式,详细如下表:


(使用b,使得标准IO可以区分文本文件和二进制文件)

注意:对于fdopen,type的意义稍有不同,因为该描述符已经被打开,所以fdopen为写而打开并不截短该文件,另外也不能

创建该文件。

总结一下上表的内容:

`fopen` 和 `freopen` 都是 C 标准库中的文件操作函数,它们的作用都是打开一个文件。但是它们的用法和行为有一些区别。 `fopen` 的用法是: ```c FILE *fopen(const char *filename, const char *mode); ``` `fopen` 打开一个文件,并返回一个指向文件的指针。 `filename` 是文件名,`mode` 是打开文件的模式字符串,包括: - "r":以只读方式打开文件,文件必须存在。 - "w":以写方式打开文件,文件不存在时创建,文件存在时清空内容。 - "a":以写方式打开文件,文件不存在时创建,文件存在时添加内容到文件末尾。 - "r+":以读写方式打开文件,文件必须存在。 - "w+":以读写方式打开文件,文件不存在时创建,文件存在时清空内容。 - "a+":以读写方式打开文件,文件不存在时创建,文件存在时添加内容到文件末尾。 `freopen` 的用法是: ```c FILE *freopen(const char *filename, const char *mode, FILE *stream); ``` `freopen` 重新打开一个已经打开的文件,返回一个指向该文件的指针。 `filename` 和 `mode` 的含义与 `fopen` 相同,`stream` 是一个已经打开的文件的指针。 `freopen` 会关闭 `stream` 所指向的文件,并使用 `filename` 和 `mode` 打开一个新的文件,返回一个指向该文件的指针。 因此,`fopen` 和 `freopen` 的主要区别在于: - `fopen` 打开一个新文件并返回一个文件指针,而 `freopen` 重新打开一个已经打开的文件并返回一个文件指针。 - `freopen` 会关闭 `stream` 所指向的文件,而 `fopen` 不会。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值