我一直在尝试使用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将不会被定义为行为.
那么我该如何检查它是否有效?