Переназначить указатель файла в цикле
Мне нужно переназначить один указатель файла на несколько файлов последовательно.
У меня есть пути к файлам правильно в пути строки.
когда я передаю путь и указатель файла на функцию для переназначения, я получаю "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() в вашем коде.