首页 > 解决方案 > 在 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);
}

标签: cfopenfreopen

解决方案


手册页

freopen()函数打开名称为 path 指向的字符串的文件,并将 stream 指向的流与它相关联。原始流(如果存在)已关闭。[...]

因此,您无需显式关闭前一个流,一旦使用完毕,只需关闭最近的流即可。


推荐阅读