我一直在尝试使用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/