您需要在 freopen() 之后 fclose() 两个文件吗?

Dan*_*iel 4 c fopen freopen

我正在编写一段代码,该代码获取一个文件并将其保存到另一个具有不同名称的文件中 - 但是,我不确定是否需要关闭这两个文件?

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);
}
Run Code Online (Sandbox Code Playgroud)

Sou*_*osh 5

手册页

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

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