在循环中重新分配文件指针

时间:2013-04-25 07:25:10

标签: c file freopen

我需要按顺序将单个文件指针重新分配给多个文件。

我在字符串路径中正确拥有文件路径。

当我将路径和文件指针传递给重新分配的函数时,我得到“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 个答案:

答案 0 :(得分:4)

在致电fptr之前,您不会检查NULL是否fclose

在定义中将fptr初始化为NULL,然后在致电NULL之前检查它是否为fclose(或freopen实际上是您的'{1}}在这里做。)

答案 1 :(得分:0)

您是否正在调用close()函数:

[1]作为一种初始化文件指针的方法?

[2]或者您是否尝试关闭以前打开的文件?

如果是这样的话:

[1]您可以使用以下内容初始化指针:

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

[2]我建议在使用fopen()的同一函数中调用close()

我建议您使用错误返回代码而不是exit(),因为这是一种更优雅的方式来终止您的程序。与在整个代码中使用exit()函数相比,错误代码更容易调试和遵循程序逻辑。