关闭

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

标签: C语言fopen
287人阅读 评论(0) 收藏 举报
分类:

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2216次
    • 积分:81
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类