C语言中文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析
C语言文件打开模式浅析
在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图:
|
打开模式 |
只可以读 |
只可以写 |
读写兼备 |
|||
|
文本模式 |
r |
w |
a |
r+ |
w+ |
a+ |
|
二进制模式 |
rb |
wb |
ab |
rb+ (r+b) |
wb+ (w+b) |
ab+ (a+b) |
其中,二进制模式与文本模式操作相似,只不过是以二进制流的形式读写而已,下面以文本模式为例分析:
1."r" 模式:
1.1 打开文件进行“只读”操作,即只能从文件读取内容。
1.2 若欲操作的文件不存在,则打开失败。
1.3 成功打开文件时,文件指针位于文件开头。
1.4 打开文件后,不会清空文件内原有内容。
1.5 可从文件中任意位置读取内容。
2."w" 模式:
2.1 打开文件进行“只写”操作,即只能向文件写入内容。
2.2 若欲操作的文件不存在,则新建文件。
2.3 成功打开文件时,文件指针位于文件开头。
2.4 打开文件后,会清空文件内原有的内容。
2.5 可向文件中任意位置写入内容,且进行写入操作时,会覆盖原有位置的内容。
3."a" 模式:
3.1 打开文件进行“追加”操作,即只能向文件写入内容。
3.2 若欲操作的文件不存在,则新建文件。
3.3 成功打开文件时,文件指针位于文件结尾。
3.4 打开文件后,不会清空文件内原有内容。
3.5 只能向文件末尾追加(写)内容。
4."r+"模式:
4.1 打开文件进行“读写”操作,即既可读取,又可写入。
4.2 若欲操作的文件不存在,则打开失败。
4.3 成功打开文件时,文件指针位于文件开头。
4.4 打开文件后,不会清空文件内原有内容。
4.5 无论是读取内容还是写入内容,都可在文件中任意位置进行,且进行写入操作时,会覆盖原有位置的内容。
5."w+"模式:
5.1 打开文件进行“读写”操作,即既可读取,又可写入。
5.2 若欲操作的文件不存在,则新建文件。
5.3 成功打开文件时,文件指针位于文件开头。
5.4 打开文件后,会清空文件内原有的内容。
5.5 无论是读取内容还是写入内容,都可在文件中任意位置进行,且进行写入操作时,会覆盖原有位置的内容。
6."a+"模式:
6.1 打开文件进行“读写”操作,即既可读取,又可写入。
6.2 若欲操作的文件不存在,则新建文件。
6.3 成功打开文件时,文件指针位于文件结尾。
6.4 打开文件后,不会清空文件内原有内容。
6.5 读取内容时,可以在任意位置进行,但写入内容时,只会追加在文件尾部。
附表格加强记忆:
|
打开模式 |
简述 |
若欲操作的 文件不存在 |
成功打开文件后 文件指针位置 |
是否清空 原有内容 |
读取位置 |
写入位置 |
注 |
|
r |
只读 |
打开失败 |
开头 |
否 |
任意位置读取 |
不可写入 |
- |
|
w |
只写 |
新建 |
开头 |
是 |
不可读取 |
任意位置写入 |
写入时会覆盖原有位置内容 |
|
a |
新建 |
结尾 |
否 |
不可读取 |
只能尾部写入 |
- |
|
|
r+ |
读写 |
打开失败 |
开头 |
否 |
任意位置读取 |
任意位置写入 |
写入时会覆盖原有位置内容 |
|
w+ |
新建 |
开头 |
是 |
任意位置读取 |
任意位置写入 |
写入时会覆盖原有位置内容 |
|
|
a+ |
新建 |
结尾 |
否 |
任意位置读取 |
只能尾部写入 |
- |
不同的打开模式对应不同的操作方式,使用时需仔细规划。
C语言中文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析的更多相关文章
- 关于open函数文件打开模式的有意思的一个现象
老猿前阵子学习了文件IO,最近正在回顾及进行各种验证和总结,老猿在对文件进行打开后的返回值检查属性时,发现文件打开返回的文件对象的读写模式与打开文件的模式并不完全相同,如下案例: fp1 = open ...
- C++文件操作(输入输出、格式控制、文件打开模式、测试流状态、二进制读写)
1.向文件写数据 头文件#include <ofstream> ①Create an instance of ofstream(创建ofstream实例) ②Open the file w ...
- C语言中文件定位函数总结
C语言中文件定位函数主要是:fseek, ftell, fsetpos, fgetpos. 先来讲前两个函数,这是最基本的定位函数: fseek函数:能把文件指针移动到文件任何位置,其原型是:int ...
- LSOF查看linux中文件打开情况
如何查看linux中文件打开情况 前言 我们都知道,在linux下,“一切皆文件”,因此有时候查看文件的打开情况,就显得格外重要,而这里有一个命令能够在这件事上很好的帮助我们-它就是lsof. lin ...
- c语言文件打开模式
(转载) 在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图: 打开模式 只可以读 只可以写 读写兼备 文本模式 r w a r+ w+ a+ 二进制模式 rb wb ab rb ...
- C语言中文件的读取和写入
在C语言中写文件 //获取文件指针 FILE *pFile = fopen("1.txt", //打开文件的名称 "w"); // 文件打开方式 如果原来有内容 ...
- c语言中文件相关操作
一 .首先介绍一下数据文件的类型: 1.二进制文件(映像文件):在内存中以二进制形式存取. 2.文本文件(ascii文件):以ascii码形式存取的文件. 通俗的讲,在Mac下,你把一个文件丢进记事本 ...
- Python——文件打开模式辨析
版权声明:本文系原创,转载请注明出处及链接. Python中,open()函数打开文件时打开模式如r.r+ .w+.w.a.a+有何不同 r 只能读 r+ 可读可写,不会创建不存在的文件.如果直接写文 ...
- python文件打开模式&time&python第三方库
r:以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. w:打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. a:打开一个文件用于追加.如果该文件已存在 ...
随机推荐
- java while循环语句
//循环语句 //符合条件,循环继续执行,否则循环退出. //特点: //先判断,后执行 public class Test16{ public static void main(String arg ...
- Centos6下编译安装gcc6.4.0
Centos6自带的gcc4.4.7不支持c++11, 于是编译安装最新版的gcc wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz .tar ...
- ios中地图定位
#import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> @interface ViewController ...
- <转>字节码指令
本文转自:http://www.cnblogs.com/nazhizq/p/6525263.html 在llimits.h文件中定义了指令的类型.其实就是32个字节. typedef lu_int32 ...
- fedora下安装运行keil uVision 4 (MDK v4.7)
先准备好mdk4.73.exe和和谐文件. 1.安装 wine 1.7 添加ppa sudo add-apt-repository ppa:ubuntu-wine/ppa 安装wine 1. ...
- permission denied (publickey)问题的解决 和 向github添加ssh key
使用ssh key这种方式进行clone ,pull github上面的项目,使用 git clone或者git pull origin master出现permission denied (publ ...
- Ubuntu菜鸟入门(十)—— Flash控件安装
一.用firefox打开视频时发现,ubuntu并没有自带flash插件,所以流媒体视频无法正常播放,为了解决这个问题,这里我们需要来安装Adobe® Flash® Player插件,这是一款轻量级浏 ...
- win7系统总是安装不了net2.0的解决方法
一些网友询问说ghost win7系统总是安装不了net2.0怎么办呢?net2.0是什么?ATI显卡的控制中心 就需要在NET2.0的基础上.可是一些用户说win7系统总是安装不了net2.0如何解 ...
- 【javascript】js中的函数节流和函数防抖
一.概念解释 函数节流和函数防抖,两者都是优化高频率执行js代码的一种手段. 大家大概都知道旧款电视机的工作原理,就是一行行得扫描出色彩到屏幕上,然后组成一张张图片.由于肉眼只能分辨出一定频率的变 ...
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. 不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...