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+)浅析的更多相关文章

  1. 关于open函数文件打开模式的有意思的一个现象

    老猿前阵子学习了文件IO,最近正在回顾及进行各种验证和总结,老猿在对文件进行打开后的返回值检查属性时,发现文件打开返回的文件对象的读写模式与打开文件的模式并不完全相同,如下案例: fp1 = open ...

  2. C++文件操作(输入输出、格式控制、文件打开模式、测试流状态、二进制读写)

    1.向文件写数据 头文件#include <ofstream> ①Create an instance of ofstream(创建ofstream实例) ②Open the file w ...

  3. C语言中文件定位函数总结

    C语言中文件定位函数主要是:fseek, ftell, fsetpos, fgetpos. 先来讲前两个函数,这是最基本的定位函数: fseek函数:能把文件指针移动到文件任何位置,其原型是:int ...

  4. LSOF查看linux中文件打开情况

    如何查看linux中文件打开情况 前言 我们都知道,在linux下,“一切皆文件”,因此有时候查看文件的打开情况,就显得格外重要,而这里有一个命令能够在这件事上很好的帮助我们-它就是lsof. lin ...

  5. c语言文件打开模式

    (转载) 在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图: 打开模式  只可以读   只可以写  读写兼备 文本模式 r w a r+ w+ a+ 二进制模式 rb wb ab  rb ...

  6. C语言中文件的读取和写入

    在C语言中写文件 //获取文件指针 FILE *pFile = fopen("1.txt", //打开文件的名称 "w"); // 文件打开方式 如果原来有内容 ...

  7. c语言中文件相关操作

    一 .首先介绍一下数据文件的类型: 1.二进制文件(映像文件):在内存中以二进制形式存取. 2.文本文件(ascii文件):以ascii码形式存取的文件. 通俗的讲,在Mac下,你把一个文件丢进记事本 ...

  8. Python——文件打开模式辨析

    版权声明:本文系原创,转载请注明出处及链接. Python中,open()函数打开文件时打开模式如r.r+ .w+.w.a.a+有何不同 r 只能读 r+ 可读可写,不会创建不存在的文件.如果直接写文 ...

  9. python文件打开模式&time&python第三方库

    r:以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. w:打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. a:打开一个文件用于追加.如果该文件已存在 ...

随机推荐

  1. JUC-线程池

    一,问题 在没有使用线程池的时候,每次需要一个线程都得手动new Thread()方式创建线程,用完了再销毁. 我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发 ...

  2. ios中键盘处理源码

      1:先分别设置各个文本框的键盘类型(inputview)-->在特定键盘中textediting中禁用输入. 2:然后递归绑定各个键盘的工具条(inputaccessview).并且个各个控 ...

  3. (原)tensorflow中finetune某些层

    转载请注明处处: http://www.cnblogs.com/darkknightzh/p/7608709.html 参考网址: https://kratzert.github.io/2017/02 ...

  4. Eclipse 语言包下载

    1.登陆http://www.eclipse.org/babel/downloads.php 选择你的eclipse版本   2.找到IDE中文补丁包 INDIGO的地址如下:http://downl ...

  5. STRTOK函数和STRTOK_R函数

    STRTOK函数和STRTOK_R函数 注:本文转载自博客园,感谢作者整理! 1.一个应用实例 网络上一个比较经典的例子是将字符串切分,存入结构体中.如,现有结构体 typedef struct pe ...

  6. “医疗信息化行业之中的联发科”- 我们在医疗行业中的定位及目标 想做一个面对中小企业的专业上游软件供应商 台湾联发科技颠覆掉的是一个封闭的手机产业系统 解决方案,即AgileHIS.NET数字化医院基础方案

    “医疗信息化行业之中的联发科”- 我们在医疗行业中的定位及目标   我们做中国医疗信息化行业之中的联发科 ---我们在医疗行业中的定位及目标 从我个人来讲,我从2001年到现在这10年之间基本上一直在 ...

  7. 代码管理(一)git

    代码管理工具有很多 主要的有两个 git  和  svn svn  衍生出来的软件有   cornerstone   smartSVN git  的图形界面工具有  Sourcetree 前几年  s ...

  8. C# Log4net根据日志等级输出到不同文件

    原文地址: Log4Net.Config <?xml version="1.0" encoding="utf-8"?> <configurat ...

  9. gitlab hook declined错误

    在向gitlab提交工程的时候,出现错误提示: remote: GitLab: You are not allowed to access master!remote: error: hook dec ...

  10. Java中类的设计技巧

    1)  一定要将数据设计为私有: 不要破坏封装性.有时需要编写一个访问器或更改器方法,但是最好还是保持实例域的私有性.数据的表示形式可能会改变,但他们的使用方式却不会经常发生变化.当数据保持私有时,他 ...