免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ldap
打印 上一主题 下一主题

考大家一个问题,fclose要不要判断返回值???? [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
21 [报告]
发表于 2004-02-27 11:24 |只看该作者

考大家一个问题,fclose要不要判断返回值????

检查 malloc 是必要的。

检查 fclose 纯属吹毛求疵。
如果怕写不成功的话,
fflush 好了。

我非常赞成“效率”这个说法。
假如说,fclose 你检查到失败了怎么办?
是不是得提示一句话?
或者写日志文件?

但是如果你写日志文件又错了怎么办?
如果 sprintf 出错了怎么办?
如果 printf、fprintf 出错了怎么办?

如果什么都得检查,
那么你的程序到底是在干什么?

这就好比一个人,得了“心理强迫症”,
掏东西的时候老怕把钱夹子掉出来,
开门的时候怕把细菌沾手上,
尽管偶尔看看钱夹子有没有掉出来、
开门的时候手上是不是脏了、是不是需要洗手
是一个好习惯,但是如果你老是这样,
你将除了一事无成之外,
只怕精神也要崩溃。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
22 [报告]
发表于 2004-02-27 11:33 |只看该作者

考大家一个问题,fclose要不要判断返回值????

说得再细一些,

钱夹子有时候会掉。
就好比 fclose 有时候会失败。

所以有时候,在有些场合,你可能需要看一下钱夹子有没有掉。
同样,如果你不嫌麻烦的话,偶尔检查一下 fclose 的返回值本也无可厚非。

但是,如果你老是看你的钱夹子,
就像你总是检查 fclose 一样,
你最终会精神分裂。

论坛徽章:
0
23 [报告]
发表于 2004-02-27 12:35 |只看该作者

考大家一个问题,fclose要不要判断返回值????

up

论坛徽章:
0
24 [报告]
发表于 2004-02-27 12:47 |只看该作者

考大家一个问题,fclose要不要判断返回值????

俺的建议是:
1)
只有一些交互信息,比如输出一些信息,写入一些日志,
才用stdio.
2)
对于文件的关键操作,比如数据库文件的读写,直接
用系统调用。

论坛徽章:
0
25 [报告]
发表于 2004-02-27 15:38 |只看该作者

考大家一个问题,fclose要不要判断返回值????

写底层系统应用的检查严格些是应该的,对于大多写普通程序的不必每个都检查,但需要有一个好习惯。这可能就是菜鸟和老鸟的区别吧^_^

论坛徽章:
0
26 [报告]
发表于 2004-02-27 17:24 |只看该作者

考大家一个问题,fclose要不要判断返回值????

开始看到这个讨论,我也困惑了,到底是否应该检查?看了flw版主的高论后,我豁然开朗了,flw说的确实有道理,至少从我这里,我不再去想这种问题了。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
27 [报告]
发表于 2004-02-27 17:31 |只看该作者

考大家一个问题,fclose要不要判断返回值????

呵呵,在此之前,我都不知道还需要检查
fclose的返回值。看应用在什么场合吧。
合适的才是最好的。

论坛徽章:
1
双子座
日期:2015-01-04 14:25:06
28 [报告]
发表于 2008-01-24 15:12 |只看该作者
原帖由 flw 于 2004-2-27 11:24 发表
检查 malloc 是必要的。

检查 fclose 纯属吹毛求疵。
如果怕写不成功的话,
fflush 好了。

我非常赞成“效率”这个说法。
假如说,fclose 你检查到失败了怎么办?
是不是得提示一句话?
或者写日志文 ...

今天同事写一个文件的时候老是写不进去
检查fwrite是成功的
但是一直找不到原因
后来换成用open write的方式
在write的时候出错 磁盘满
fwrite是有缓冲的 所以磁盘满也不一定失败
但是fflush或者fclose就出错了

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
29 [报告]
发表于 2008-01-24 15:15 |只看该作者
原帖由 yecheng_110 于 2008-1-24 15:12 发表

今天同事写一个文件的时候老是写不进去
检查fwrite是成功的
但是一直找不到原因
后来换成用open write的方式
在write的时候出错 磁盘满
fwrite是有缓冲的 所以磁盘满也不一定失败
但是fflush或者fclos ...

也许应该想想,磁盘为什么会满?

论坛徽章:
1
双子座
日期:2015-01-04 14:25:06
30 [报告]
发表于 2008-01-24 15:18 |只看该作者
原帖由 flw 于 2008-1-24 15:15 发表

也许应该想想,磁盘为什么会满?

他用虚拟机 分了3.2G 用光了
要是检查一下返回值 打印一条出错信息 可能就不会浪费这么多时间了

[ 本帖最后由 yecheng_110 于 2008-1-24 15:21 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP