【发布时间】:2014-07-23 04:56:41
【问题描述】:
我知道这是一个经常被问到的问题,我希望这里有人可以帮助我解决这个问题...
这是一段很简单的代码,我试图打开一个文件,但该文件不存在。然后,我想根据需要处理此错误并继续前进,但是当我尝试将其与 NULL 进行比较时,文件指针创建了分段错误...请参阅下面的代码:
FILE* file = fopen(res, "r");
if(file == NULL)
{
printf("NO CONFIG FILE");
return 0;
}
即使 res 指向的文件不存在,在进行此比较时会发生分段错误 if(file==NULL),如果我使用 if(file==0) 也会失败。我真的在我的智慧在这里结束,任何意见将不胜感激!
这里只是一个快速更新...
当我删除代码以检查文件指针的有效性并且文件存在时,代码可以正常工作。问题似乎出在我对文件指针的评估中……
【问题讨论】:
-
if(file)有效吗?NULL和0都转换为false -
这不太可能。向我们展示完整的代码。
res是什么? -
您的错误在别处。 “res”指向的字符串很可能已损坏。在这段代码之前尝试
printf("%s\n", res);。 -
这是不可能的。当
fopen访问res时,前面的语句本身有问题。确保res是一个有效的以零结尾的字符串。 -
不行,我试过 if(!file) 还是不行。我正在尝试测试文件不存在的情况