我一直在尝试使用C进行简单的文件处理,我想确保使用此命令可以访问该文件。

#include<stdio.h>

main()
{
    CheckFile();
}

int CheckFile()
{
    int checkfile=0;

    FILE *fp1;
    fp1 = fopen("users.sav","r");

    if(fp1==NULL)
    {
        fopen("users.sav","w");
        fclose(fp1);
    }
    if(checkfile!=0)printf("\nERROR ACCESSING FILE!\nNow exiting program with exit code: %d\n",checkfile);exit(1);
    return 0;
}

然后显示
Segmentation fault (core dumped)

但是如果文件已经预先存在就不会出现段错误(例如,当我手动创建该文件或第二次运行该程序时)

请帮忙。我需要一个星期才能完成的最后一个项目,而且还没有文件和指针的问题。

我正在使用“gcc(Ubuntu/Linaro 4.8.1-10ubuntu9)4.8.1”

压力

我知道显然存在类似的问题,但请不要对此表示否决。理解我已经开始编码了几个月,因此无法理解那些高级的代码和东西。

p.p.s

我在另一个问题中看到了这一点



那么我如何确切地检查它是否有效?

最佳答案

这很正常,当fp1为NULL时调用fclose(fp1)时。

顺便提一句

fopen("users.sav","w");

是没有用的,因为您没有将返回值分配给文件指针。这意味着将打开users.sav文件进行写入,但是您将永远无法在其中写入任何内容。

关于c - fclose()导致段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22506455/

10-11 21:05