Переназначить указатель файла в цикле

Мне нужно переназначить один указатель файла на несколько файлов последовательно.

У меня есть пути к файлам правильно в пути строки.

когда я передаю путь и указатель файла на функцию для переназначения, я получаю "Aborted (core dumped)"..

FILE * fptr;        //Global file pointer
FILE * getfptrr(char * path)
{

    fclose(fptr);
    fptr = fopen(path, "r");

    if(fptr!=NULL)
        return fptr;
    else 
    {
        printf("\n Something's Wrong!!! \n");
        exit(1);
    }
}

Должен ли я использовать Frepoen? и как...

Или любые другие варианты??

2 ответа

Решение

Вы не проверяете, что fptr не является NULL прежде чем позвонить fclose,

инициализировать fptr в NULL в определении, а затем проверьте, что это не NULL перед звонком fclose (или же freopen что на самом деле то, что вы делаете здесь).

Вы вызываете функцию close():

[1] Как способ инициализации указателя файла?

[2] Или вы пытаетесь закрыть ранее открытый файл?

Если так:

[1] Вы можете инициализировать указатель с помощью следующего:

    fptr = NULL;
    fptr = fopen(path, "r");

[2] Я бы предложил вызвать close() в той же функции, где используется fopen()

Я рекомендую вам использовать код возврата ошибки вместо exit(), так как это более изящный способ завершить вашу программу. Коды ошибок облегчают отладку и следуют логике программы, чем использование функций exit() в вашем коде.

Другие вопросы по тегам