c - 在 freopen() 之后是否需要 fclose() 两个文件?
问题描述
我正在编写一个代码,它获取一个文件并将其保存到另一个具有不同名称的文件中 - 但是,我不确定是否需要关闭这两个文件?
FILE *logfile = fopen("log.txt", "a+");
while(1) {
char filename[500];
char logline[512];
char channel[512];
//Do stuff
sprintf(filename, "%s.log.txt", channel);
freopen(filename, "a+", logfile);
log_to_file(logline, logfile);
}
解决方案
从手册页
该
freopen()
函数打开名称为 path 指向的字符串的文件,并将 stream 指向的流与它相关联。原始流(如果存在)已关闭。[...]
因此,您无需显式关闭前一个流,一旦使用完毕,只需关闭最近的流即可。
推荐阅读
- windows - 无法克隆大型 bitbucket 存储库
- android - Flutter 录屏
- javascript - 当停止传播在角度处于活动状态时如何关闭菜单
- java - FileOutputStream 文件显示 Writable = false
- postgresql - 这是订阅 Redis 频道并将消息插入 PostgreSQL 的最简单方法
- python - Python 子进程从标准输出块读取(实时读取输出)
- docker - entrypoint.sh:执行:gunicorn:未找到(Ubuntu)
- swift - 在保存 UIViewController 中将 UILabel 从一个位置动画化到另一个位置
- python - 网页抓取信息可能位于页面上 3 个位置中的 1 个,不确定如何使用 if 语句来消除非类型结果
- flutter - Flutter,“方法‘map’不能被无条件调用,因为receiver可以是‘null’。”