小编use*_*503的帖子

fclose()导致分段错误

我一直在尝试使用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;
}
Run Code Online (Sandbox Code Playgroud)

然后它显示

Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

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

请帮忙.我需要这个在一周内完成的最终项目,我还没有掌握文件和指针.

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

PS

我知道存在明显相似的问题,但请不要这样做.明白我已经开始编写了几个月,因此无法理解这些高级代码和内容.

PPS

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

在原始代码中无法保证fopen实际上正在工作,在这种情况下它将返回NULL并且fclose将不会被定义为行为.

那么我该如何检查它是否有效?

c file-io fopen segmentation-fault fclose

8
推荐指数
2
解决办法
2万
查看次数

标签 统计

c ×1

fclose ×1

file-io ×1

fopen ×1

segmentation-fault ×1