Вам нужно fclose () для обоих файлов после freopen ()? - PullRequest
2 голосов
/ 29 мая 2019

Я пишу код, который берет один файл и сохраняет его в другом с другим именем - однако я не уверен, нужно ли мне закрыть оба файла или нет?

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);
}

1 Ответ

4 голосов
/ 29 мая 2019

со страницы руководства

Функция freopen() открывает файл, именем которого является строка, на которую указывает путь, и связывает с ней поток, на который указывает поток. Исходный поток (если он существует) закрыт. [...]

Итак, вам не нужно явно закрывать предыдущий поток после завершения использования, просто закройте недавний поток.

...