fopen函数的问题:函数返回NULL的情况有哪些???

我遇到的问题是这样的:fp=fopen("disk.dat","rb"))==NULL,这条语句成立的原因我知道可能是文件不存在,可是fp=fopen("disk.dat... 我遇到的问题是这样的:fp = fopen("disk.dat","rb"))==NULL,这条语句成立的原因我知道可能是文件不存在,可是fp = fopen("disk.dat","wb"))==NULL这条语句成立的原因有哪些?我知道rb是读写打开一个二进制文件,该文件必须已经存在,且只能从该文件读出。而用“wb”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。所以wb也就不存在因为文件不存在而返回NULL的情况了,那在什么情况下,可能会返回NULL呢???先谢谢了!! 展开
 我来答
御含灵9r
2011-06-21 · TA获得超过4157个赞
知道大有可为答主
回答量:3007
采纳率:0%
帮助的人:2680万
展开全部
有几种情况:1.硬盘空间满,不能再创建文件 2.文件名有错误,有非法字符比如?,*等
3.你对那个目录没有创建文件的权限,比如NTFS 4.文件已经存在,但是无法被覆盖或者打开,比如另一个进程已经独占打开了,这是你就不能再打开了
小强恢恢SQY
2019-12-29
知道答主
回答量:38
采纳率:100%
帮助的人:4.2万
展开全部
应该写 (fp = fopen("disk.dat", "rb")) == NULL 。
前面没括号,如果 fopen 返回 NULL,fp 就是 1,否则就是 NULL。

你的语句本质上是把后面 fopen 返回值和 NULL 比较的 bool 值给了fp。
相当于
if(fopen("disk.dat", "rb")) == NULL)
fp = true;
else
fp = false;
或者
fp = static_cast<bool>(fopen("disk.dat", "rb") == NULL);
另外,为了程序安全,最好使用 fopen_s,fopen 有安全隐患。
这个火不知道救得及不及时 = =
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暖萱紫菱
2015-09-26 · TA获得超过1.6万个赞
知道小有建树答主
回答量:2129
采纳率:93%
帮助的人:162万
展开全部
文件打开失败时,函数会返回null值。比如:
以“r”方式打开一个不存在的文件,就会返回NULL;
以"w"方式打开一个不允许更改的文件,或由其他程序打开而锁定的文件,就会返回NULL;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风卷红旗2018
2011-06-21 · TA获得超过249个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:203万
展开全部
楼上说法正确
还有就是你比如你想打开F盘的某个文件
但你电脑根本没有F盘,这时就会出现IO异常,就会返回NULL
请采纳为最佳答案,谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
捡到的幸福
2011-06-21 · TA获得超过1282个赞
知道小有建树答主
回答量:568
采纳率:0%
帮助的人:349万
展开全部
文件不存在啦
读写权限不够啦等等
追问
我的权限也够,那是不是就没有了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式