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??

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top