gpt4 book ai didi

c - C 中的 FILE 指针不返回 NULL

转载 作者:行者123 更新时间:2023-11-30 19:56:33 24 4
gpt4 key购买 nike

我知道这是一个经常被问到的问题,我希望这里有人可以帮助我解决这个问题......

这是一段非常简单的代码,我正在尝试打开一个文件,但该文件不存在。然后,我想根据需要处理此错误并继续前进,但是当我尝试将其与 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) 不会使您的程序崩溃。如果您使用像 gdb 这样的调试器,它会向您显示确切的崩溃位置,该位置在其他地方。

您可能认为发生这种情况的原因是您没有在 printf() 调用中打印换行符。默认情况下,当 stdout 是终端时,stdout 是行缓冲,这意味着它不会刷新,直到您打印换行符或使用 fflush() 自己显式刷新它。但是,如果您的程序在刷新之前崩溃,则所有缓冲的数据都会丢失。

关于c - C 中的 FILE 指针不返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24902151/

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