我一直想简单的文件用C处理,我想,以确保该文件可以访问尝试使用此FCLOSE()会导致段错误
#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.S
我知道,存在明显相似的问题,但请不要downvote这个。了解我已经开始编写几个月的代码,因此无法理解这些高级代码和内容。
PPS
我看到这个在其他问题
有在则fopen实际工作的原代码,在这种情况下,它会返回NULL和FCLOSE不会被定义的行为没有保证。
那么我该如何检查它是否工作?
的检查是正确的,只是不'FCLOSE(FP1)''如果FP1 == NULL'但调用'FP1 = FOPEN(..., “W”);' –
谢谢:) 的答案真的帮助我编码到目前为止进展顺利。 – user3437503
可能重复[fclose()导致分段错误](http://stackoverflow.com/questions/1443164/fclose-causing-segmentation-fault) –