| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 730 人关注过本帖
标题:c语言关于文件编程
只看楼主 加入收藏
幽灵X
Rank: 5Rank: 5
等 级:职业侠客
帖 子:128
专家分:328
注 册:2013-1-28
收藏
得分:0 
回复 9楼 TonyDeng
我成功运行了,为什么还有错,不明白楼主的意思,请指点一下。
2013-02-14 16:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
多运行几次看看,特别是在文件已存在的情况下。

授人以渔,不授人以鱼。
2013-02-14 16:02
幽灵X
Rank: 5Rank: 5
等 级:职业侠客
帖 子:128
专家分:328
注 册:2013-1-28
收藏
得分:0 
回复 12楼 TonyDeng
我试过了,有文件和没文件都尝试了几次,没出现什么异常,我还打开目录注意了文件的创建时间。
2013-02-14 16:06
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
若文件已存在,第一次打开文件成功,此时询问是否覆盖,你答Y,已打开的文件关闭了没有?在没有关闭第一个文件的情况下再创建它一次,你的系统让你成功,你应该装香庆贺了。这里会出现什么后患,没有人知道。

另外,你这种覆盖逻辑,在共享环境下就会碰钉子,假如别人已经打开了这个文件,它是存在的,但你无法覆盖它,仍然要失败。

授人以渔,不授人以鱼。
2013-02-14 16:14
幽灵X
Rank: 5Rank: 5
等 级:职业侠客
帖 子:128
专家分:328
注 册:2013-1-28
收藏
得分:0 
回复 14楼 TonyDeng
呃......这个没注意,我考虑的方面有所欠缺,以后注意。
我再看看程序。谢谢版主。
2013-02-14 16:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
fopen()中的"w"方式,与具体的环境有关,有些实现方法是先把已存在的文件删除了再重新创建一个同名文件的,若采用这种方法,先前已打开的文件未关闭,就无法删除。要稳妥,就应该无论如何都关闭第一次打开的文件,然后再转换模式重新打开一次。

本质上,读写文件的操作,是不能仅靠fopen()的返回值是否为NULL来判断的,返回NULL的原因其实有很多,比如没有权限、共享冲突、文件错误、路径错误、设备不可存取等等,不是轻易地用fopen()就能解决的,即使那个文件不存在,fopen("w")也可能失败。这种方法,在单机时代有用,但现在的多任务多用户系统,不能再这样了。

授人以渔,不授人以鱼。
2013-02-14 16:36
幽灵X
Rank: 5Rank: 5
等 级:职业侠客
帖 子:128
专家分:328
注 册:2013-1-28
收藏
得分:0 
回复 16楼 TonyDeng
我记住了,现在是初学,这些知识都不懂,随便买了本教材就看了。
看来好的教材也很重要啊。朋友建议看C Primer Plus,弱弱的问下版主:这本书好吗?
2013-02-14 16:44
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
收藏
得分:0 
这本书不错(虽然我懒得没看完)
2013-02-14 19:14
洫魇
Rank: 2
等 级:论坛游民
帖 子:46
专家分:34
注 册:2013-2-5
收藏
得分:0 
用fcntl.h的access函数也可以判断一个文件是否存在.

一切,都在输给时间.
2013-02-14 19:21
快速回复:c语言关于文件编程
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034572 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved