文件的具体操作,fopen在不同场景的参数设置

最近做了一些文件处理的东西,发现fopen的打开属性不同会有很大的问题,如果不认识这些而凭感觉去写代码会有很大的问题。

首先说一些fopen的打开方式:

r:打开文本文件,只能读,不能创建文件

r+:打开文本文件,能读能写,不能创建文件,不清空文件

w::打开文本文件,只能写,可以创建文件,清空文件

w+:打开文本文件,能读能写,可以创建文件,清空文件

a:打开文本文件,能读能写,可以创建文件,不清空文件(原EOF符不保留)

a+:打开文本文件,能读能写,可以创建文件,不清空文件(原EOF符保留)

在中间加"b"就是打开二进制文件,其他都一样,这个不是本文主要要说的问题。


以前给文件写内容一般都是用的“wb+",如果要保留原来的文件内容一般都用的是"ab+",所以以后都是用的这一个思路,写新文件都用"wb+",增加内容就用"ab+"。

但是最近要做一个设计,要求是修改文件当中的某一个部分,这个由于要保留一部分原文件内容,所以就用了"ab+",但是这个时候就发现了一个问题,无论我fseek到哪个位置,我fwrite的内容都是放在了文件的末尾,这个就明显不符合设计的要求。

我以为这样了要实现这个目的只能通过写缓存文件了,先把原文件内容备份到缓存文件里面,然后再用"wb+"去写原文件,然后到了写修改的内容的时候再把我修改的内容写进去,这是一个“笨”方法,但是当时我确实是想到了用这个方法。

后来我想了一下,看看"rb+"能不能写文件吧,结果发现这个是可以写文件的,而且不是用的追加方式,也不会清空文件,正是我要用的参数。


所以最后我就总结了一下文件操作的参数设置

如果想新建文件,就用w(+)

如果想增加内容,就用a(+)

如果想修改内容,就用r+




阅读更多
文章标签: C语言 fopen
个人分类: C语言
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

文件的具体操作,fopen在不同场景的参数设置

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭