繁体   English   中英

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

[英]reassign a file pointer in loop

我需要将一个文件指针重新分配给多个文件。

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

当我将路径和文件指针传递给要重新分配的函数时,出现“异常终止(核心已转储)”的信息。

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

还是其他选择??

在调用fclose之前,不要检查fptr是否不为NULL

在定义中将fptr初始化为NULL ,然后在调用fclose (或freopen ,实际上是您在此处所做的操作)之前检查它是否不为NULL

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

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

[2]还是您要关闭以前打开的文件?

如果是这样的话:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM