【发布时间】:2014-04-25 17:35:28
【问题描述】:
我一直在尝试在 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”
附言
我在另一个问题中看到了这个
在您的原始代码中无法保证 fopen 实际工作,在这种情况下它将返回 NULL 并且 fclose 不会被定义为行为。
那么我该如何检查它是否有效呢?
【问题讨论】:
-
检查是正确的,只是不要
fclose(fp1)iffp1 == NULL而是调用fp1 = fopen(..., "w"); -
谢谢 :) 答案确实帮助我,到目前为止编码进展顺利。
标签: c file-io segmentation-fault fopen fclose