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

原创 2016年06月01日 11:41:04

最近做了一些文件处理的东西,发现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函数了解

fopen()函数功能:open a file. 原型:FILE * fopen(const char * path,const char * mode); 需要#include 返回值...
  • hgj125073
  • hgj125073
  • 2012年12月12日 15:55
  • 9169

文件操作open与fopen和read与fread的区别

系统调用的文件操作 常用函数: 1 open() 2 read() 3 write() 4 lseek() 5 close() 这5个函数的特点是不带缓存,直接对文件(包括设备)进行读写...
  • dreamInTheWorld
  • dreamInTheWorld
  • 2016年09月07日 22:59
  • 1424

c语言fopen函数

fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式); 其中, “文件指针名”必须是被说明为FILE 类型的指针变量; “文件名...
  • u012425536
  • u012425536
  • 2014年03月31日 17:43
  • 2397

C语言的fopen函数(文件操作/读写)

头文件:#include fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:     FILE * fopen(const char * path, const char ...
  • sky1203850702
  • sky1203850702
  • 2016年10月10日 15:32
  • 1417

fopen使用的"r"的区别"rb"

fopen打开文件,这里与文件相关的操作使用的使用r或者rb 有些区别的地方在于是否是一个二进制的形式。 函数原型:FILE * fopen(const char * path,const ch...
  • u011046042
  • u011046042
  • 2015年10月30日 11:06
  • 3783

fopen及读写权限

函数简介 函数原型:FILE * fopen(const char * path,const char * mode); 返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件...
  • gettogetto
  • gettogetto
  • 2017年06月05日 15:26
  • 1169

fopen自动创建文件失败(文件路径检查创建)

一、问题描述       fopen函数使用过程发现,当fopen要打开的文件路径中,包含一个不存在路径时,不管fopen函数的第二参数设成什么,都无法建立该文件。如下: char *filenam...
  • u013485792
  • u013485792
  • 2016年08月26日 14:22
  • 7726

C文件操作函数_笔记

参考文章:http://www.cnblogs.com/hnrainll/archive/2011/09/16/2178706.html http://www.cnblogs.com/joeblack...
  • benjamin721
  • benjamin721
  • 2016年02月26日 09:48
  • 2873

fopen函数mode参数详解

函数简介: 函数功能:fopen能打开磁盘内的文件,使程序能对文件进行读写。 函数原型:FILE *fopen(const char *path, const char * mode); 传入...
  • to_Baidu
  • to_Baidu
  • 2016年12月04日 23:23
  • 1518

Linux 文件编程—fopen函数

1.2 文件的输入输出函数 键盘、显示器、打印机、磁盘驱动器等逻辑设备, 其输入输出都可以通过文件管理的方法来完成。而在编程时使用最多的要算是磁盘文件, 因此本节主要以磁盘文件为主, 详细介...
  • zwt0112
  • zwt0112
  • 2017年01月17日 12:56
  • 2814
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文件的具体操作,fopen在不同场景的参数设置
举报原因:
原因补充:

(最多只允许输入30个字)