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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值