gpt4 book ai didi

c - fclose() 导致段错误

转载 作者:太空狗 更新时间:2023-10-29 17:01:46 24 4
gpt4 key购买 nike

我一直在尝试在 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”

附言

我在另一个问题上看到的

There's no guarantee in your original code that the fopen is actually working, in which case it will return NULL and the fclose will not be defined behaviour.

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

最佳答案

这很正常,当您在 fp1 为 NULL 时调用 fclose(fp1)

顺便说一句

fopen("users.sav","w");

是无用的,因为您没有将返回值分配给文件指针。这意味着将打开 users.sav 文件进行写入,但您将永远无法在其中写入任何内容。

关于c - fclose() 导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22506455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com