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. python str方法之ljust、rjust、center

    # -*- coding: cp936 -*- #python 27 #xiaodeng #str方法之ljust.rjust.center #http://www.runoob.com/python ...

  2. 在Docker容器中运行Spring Boot的jar包 jar外的配置文件无法生效

    Spring Boot加载配置文件,默认会从几个固定位置搜索一下看看有没有配置文件 ——application.properties或者bootstrap.properties(如果你使用了sprin ...

  3. requires the FLAG_ACTIVITY_NEW_TASK flag

    07-18 16:34:05.891: E/AndroidRuntime(18396): FATAL EXCEPTION: main 07-18 16:34:05.891: E/AndroidRunt ...

  4. redis统计大key

    –bigkeys redis-cli -h <host> -p <port> -n <db> --bigkeys 这条命令会从指定的 Redis DB 中持续采样, ...

  5. shell 脚本启动spring boot的jar 包

    #!/bin/bash # kill java进程 java_sso_prod_pid=`ps aux|grep sso.jar|grep -v "grep"|awk '{prin ...

  6. 【RS】Local Low-Rank Matrix Approximation - LLORMA :局部低秩矩阵近似

    [论文标题]Local Low-Rank Matrix Approximation (icml_2013 ) [论文作者]Joonseok Lee,Seungyeon Kim,Guy Lebanon  ...

  7. 树莓派进阶之路 (021) - 3.2inch RPi LCD (B)

    参考文档:http://www.waveshare.net/wiki/3.2inch_RPi_LCD_(B) 产品特点 320x240分辨率 电阻式触摸控制 兼容并可直接插入任何版本树莓派 提供Ras ...

  8. numpy 切片

    numpy 中的切片与数组中的切片类似. 数组 [ 起始:终止:步长, 起始:终止:步长, ... ] 所有的切片操作(无论是步长为+的正序,还是步长为 - 的逆序)都是开始位置包含,结束位置不包含( ...

  9. Fuel4d 2.3 公布

    [版本号编号]:Fuel4D 2.3. [公布日期]:2014年10月20日. [编译环境]:UNICODE.VS2010.x86. [开发环境]:ANSI/UTF-8/UNICODE.VS2005/ ...

  10. cocos2d 2.0和UIKit混合编程, Push CCDirector的时候出现黑屏的天坑

    症状 使用cocos2d 2.0和UIKit混合编程, 有一块用cocos2d编写的小程序, 将CCDirector push到一个UINavigationController里面. 虽然事先在后台初 ...