2

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

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

当我将路径和文件指针传递给要重新分配的函数时,我得到“中止(核心转储)”..

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吗?如何...

还是有其他选择??

4

2 回答 2

4

在调用之前,您不会检查fptris 。NULLfclose

在定义中初始化fptr为,然后在调用之前NULL检查它是否不是(或者这实际上是你在这里所做的)。NULLfclosefreopen

于 2013-04-25T07:27:22.763 回答
0

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

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

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

如果是这样:

[1] 您可以使用以下方法初始化指针:

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

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

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

于 2013-04-25T08:16:00.407 回答