freopen与fopen区别
时间: 2023-10-16 11:13:01 浏览: 160
fopen和fopens的区别
`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` 不会。
阅读全文