You do not check that the fptr
is not NULL
before you call fclose
.
Initialize fptr
to NULL
in the definition, and then check that it's not NULL
before calling fclose
(or freopen
which is actually what you're doing here).
Pregunta
I need to reassign a single file pointer to multiple files sequentially.
I have the file paths correctly in a string path.
when i pass the path and the file pointer to a function to reassign, I get "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);
}
}
Should I use frepoen?? and how...
Or any other options??
Solución
You do not check that the fptr
is not NULL
before you call fclose
.
Initialize fptr
to NULL
in the definition, and then check that it's not NULL
before calling fclose
(or freopen
which is actually what you're doing here).
Otros consejos
Are you calling the close() function:
[1] As a way to initialize the file pointer?
[2] Or are you trying to close a previously opened file?
If so:
[1] You can initialize the pointer with the following:
fptr = NULL;
fptr = fopen(path, "r");
[2] I would suggest to call close() in the same function where fopen() is used
I recommend you use an error return code instead of exit() as it's a more graceful way to terminate your program. Error codes make it easier to debug and follow program logic than having exit() functions throughout your code.