精华内容
下载资源
问答
  • 以w+方式打开一个文件
    千次阅读
    2020-01-02 14:33:17

    r:以只读的方式打开文本文件,文件必须存在;
    w:以只写的方式打开文本文件,文件若存在则清空文件内容从文件头部开始写,若不存在则根据文件名创建新文件并只写打开;
    a:以只写的方式打开文本文件,文件若存在则从文件尾部以追加的方式开始写,文件原来存在的内容不会清除(除了文件尾标志EOF),若不存在则根据文件名创建新文件并只写打开;r+:以可读写的方式打开文本文件,文件必须存在;
    w+:以可读写的方式打开文本文件,其他与w一样;
    a+:以可读写的方式打开文本文件,其他与a一样;若打开二进制文件,可在后面加个b注明,其他一样,如rb,r+b(或rb+)。

    更多相关内容
  • 步 排除文件打开方式错误: r只读,r+读写,不创建 w新建只写,w+新建读写,二者都会将文件内容清零 (以w方式打开,不能读出。w+可读写) w+与r+区别: r+:可读可写,若文件不存在,报错;w+: 可读可写,若...
  • 文件操作

    千次阅读 2021-05-26 03:23:39
    定义文件指针的一般形式:FILE *指针变量标识符2.C语言中有三特殊的文件指针无需定义、打开可直接使用:stdin:标准输入,默认为当前终端(键盘)我们使用的scanf、getchar、函数默认从此终端获得数据stdout:标准...

    一.文件的打开与关闭

    1.定义文件指针的一般形式:FILE *指针变量标识符

    2.C语言中有三个特殊的文件指针无需定义、打开可直接使用:

    stdin:标准输入,默认为当前终端(键盘)

    我们使用的scanf、getchar、函数默认从此终端获得数据

    stdout:标准输出,默认为当前终端(屏幕)

    我们使用的printf、puts函数默认输出信息到此终端

    stderr:标准出错,默认为当前终端(屏幕)

    当我们程序出错或使用perror函数时信息打印在此终端

    3.打开文件

    FILE *fp = NULL;

    fp = fopen(文件名,文件打开方式);

    ? 文件名:要操作的文件的名字,可以包含路径信息

    ? 文件打开方式:"读"、"写"、"文本"、"二进制"等

    ? fp文件指针:指向被打开的文件,失败返回空,成功返回相应指针

    例如:FILE *fp = NULL;

    fp = fopen("test.txt","r");

    if(fp == NULL)

    printf("File open error\n");

    4.文件打开的几种方式:读写权限:r  w  a  +

    r:以只读方式打开文件

    文件不存在,返回NULL

    文件存在,返回文件指针,进行后续的读操作

    w:以只写方式打开文件

    文件不存在,以指定文件名创建此文件

    若文件存在,清空文件内容,进行写操作

    a:以追加方式打开文件

    文件不存在,以指定文件名创建此文件(同w)

    若文件存在,在文件的结尾处进行写操作

    +:同时以读写打开打开指定文件

    模式(b可以省略)

    功能

    r或rb

    以只读方式打开一个文本文件(不创建文件)

    w或wb

    以写方式打开问价(使文件长度截断为0字节,创建一个文件)

    a或ab

    以添加方式打开问价,即在末尾添加内容,当文件不存在时,创建问价用于写

    r+或rb+

    以可读、可写的方式打开文件(不创建新文件)

    w+或wb+

    以可读、可写的方式打开文件(使文件长度为0字节,创建一个文件)

    a+或ab+

    以添加方式打开文件,打开文件并在末尾更改文件(如果文件不存在,则创建文件)

    5.关闭文件

    ? 调用形式:fclose(文件指针);

    文件指针:指向要关闭的文件

    ? 返回值:关闭文件成功,返回值为0

    关闭文件失败,返回值非0

    例如:FILE *fp = NULL;

    fp = fopen("test.txt","r");

    fclose(fp);

    二.文件的顺序读写

    1.字节读写函数:fgetc()和fputc()

    ? ch = fgetc(fp);  //读一个字节

    从指定文件读一个字节赋给ch

    文本文件:读到文件末尾返回EOF(EOF值为1)

    二进制文件:读到文件结尾,使用feof判断结尾

    ? fputc(ch,fp);  //写一个字节

    把ch变量中的值(一个字节)写到指定的问价

    如果输出成功,则返回输出的字节

    如果输出失败,则返回一个EOF

    2.字符串读写函数:fgets()和fputs()

    ? fgets(str,n,fp);  //读一个字符串

    从fp指向的文件中读入n-1个字符保存在str指向的内存中,‘str为存放数据的首地址

    在读入n-1个字符之前遇到换行符或EOF,读入提前结束,在最后加一个‘\0

    ? fputs("china",fp);  //写一个字符串

    向fp指定的文件写一个字符串

    第一个参数可以是字符串常量、字符数组名或字符指针,字符串末尾的‘\0‘不会写到文件

    3.数据块读写函数:fread()和fwrite()

    ? fwrite(buffer,size,count,fp);  //将buffer中的内容写入到fp所指向的文件中

    ? fread(buffer,size,count,fp);  //将fp所指向的文件中的内容读入到buffer内存中

    参数说明:buffer:指向存储数据空间的首地址的指针

    size:一次读写的数据库大小

    count:要读写的数据块个数

    fp:指向要进行写操作的文件指针

    返回值:实际读写的数据块数,不是总数据大小,不到1块返回0,不到2块返回1

    4.格式化读写函数:fscanf()和fprintf()

    ? fprintf(文件指针,格式字符串,输出列表);

    例如:fprintf(fp,"%d,%6.2f",i,f);  //将int型变量i和float型变量的值按%d和%6.2f的格式输出到fp指向的文件中

    ? fscanf(文件指针,格式字符串,输入列表);

    例如:fscanf(fp,"%d,%f",&i,&f);  //从磁盘文件中读取整型值存到变量i中,读取事型值存到变量f中

    三.文件的随机读写

    1.ftell函数

    2.rewind函数

    3.fseek函数

    四.文件的出错监测

    1.文件结束检测函数

    2.读写文件出错检测函数ferror

    3.文件出错标志和文件结束标志置0函数clearerr

    原文:http://www.cnblogs.com/lemongirl/p/7900744.html

    展开全文
  • C语言文件打开模式浅析在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图:打开模式只可以读只可以写读写兼备文本模式rwar+w+a+二进制模式rbwbabrb+ (r+b)wb+ (w+b)ab+ (a+b)其中,二进制模式与文本模式...

    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++文件操作(输入输出、格式控制、文件打开模式、测试流状态、二进制读写)

    1.向文件写数据 头文件#include ①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:打开一个文件用于追加.如果该文件已存在 ...

    C\C++中 fopen中文件打开方式的区别:

    在C语言中,大家常用到fopen打开文件,准备进行写操作,再用fwrite把数据写入文件,最后用fclose关闭文件. 如以下C代码:   #include char ...

    随机推荐

    HuffmanTree的浅析和在C#中的算法实现

    无论是在我们的开发项目中,还是在我们的日常生活中,都会较多的涉及到文件压缩.谈到文件压缩,可能会有人想问文件压缩到底是怎么实现的,实现的原理是什么,对于开发人员来说,怎么实现这样一个压缩的功能. 接下 ...

    MVC4.0 利用HandleErrorAttribute和log4net实现记录异常日志功能

    1.MVC4.0中HandleErrorAttribte已经帮我们处理了异常问题,当我们新建一个非空的MVC项目时候,在FilterConfig中会发现这样的代码 public class Filte ...

    区分int a() 和 int a

    事因 #include using namespace std; struct A { A(int) {} A() {} void fun() {}; }; int ...

    Jmeter初步使用三--使用jmeter自身录制脚本

    今日,小编在网上看到很多人使用badboy来录制,然后再把jmx脚本弄到Jmeter上做性能测试.这种方法在小编刚用Jmeter时也曾经用过,但是感觉太麻烦了,所以就找了下其它资料.结果,小编偶然发现 ...

    Linux Shell编程(1)——shell编程简介

    Shell是一个命令解释器.它不仅是操作系统内核与用户之间的绝缘层,同时也是一种功能相当强大的编程语言.一个Shell程序,通常称为脚本,它是一个由系统调用,命令工具,软件包和已编译的二进制包&quo ...

    POJ 1759 Garland(二分答案)

    [题目链接] http://poj.org/problem?id=1759 [题目大意] 有n个数字H,H[i]=(H[i-1]+H[i+1])/2-1,已知H[1],求最大H[n], 使得所有的H均 ...

    13 Basic Cat Command Examples in Linux(转) Linux中cat命令的13中基本用法

    Cat (串联) 命令是Linux/Unix开源系统中比较常用的一个命令.我们可以通过Cat命令创建一个或多个文件,查看文件内容,串联文件并将内容输出到终端设备或新的文件当中,这篇文章我们将会以实例的 ...

    laravel的seeder数据填充

    1.简介//Laravel 包含了一个简单方法来填充数据库——使用填充类和测试数据.所有的填充类都位于database/seeds目录.//填充类的类名完全由你自定义,但最好还是遵循一定的规则,比如可 ...

    MACOS配置VIM成简单IDE傻瓜式操作

    零.参考文献: https://www.jianshu.com/p/f0513d18742a 一.安照我的配置:保存文件 " Configuration file for vim &quot ...

    MacOS下搭建python环境

    1. 安装须知 Mac OS自身其实已经带有Python,版本为2.7.X,这个Python主要用于支持系统文件和XCode,所以我们在安装新的Python版本时候最好不要影响这部分. 这里就会出现一 ...

    展开全文
  • 正在进行的项目中有个日志存储模块,需要在设备端将日志数据写到存储介质——其实就是硬盘,就是一个文件。在我测试时,发现上位机读取到的日志数据不全,明明登陆到设备看有100多KB,但读到的日志才2行,肯定有问题...
    正在进行的项目中有个日志存储模块,需要在设备端将日志数据写到存储介质——其实就是硬盘,就是一个文件。在我测试时,发现上位机读取到的日志数据不全,明明登陆到设备看有100多KB,但读到的日志才2行,肯定有问题,另外,设备存储的日志文件内容也有乱码出现。因为这个模块在其它项目一直使用,一直OK,现在出问题了,很郁闷。而且该模块嵌入到其它大的功能模块,后来跟踪、独立测试,终于找到问题原因。当这个“小”问题解决时,都已经过了大半天了,架构如果复杂,以至于要细细跟踪,不同平台的差别,以至于无人注意。

    以前使用的是ARM平台,使用的存储介质是eeprom;而现在是X86平台,没有了eeprom,所有的数据,存储在硬盘上,而在linux上看,都是文件。这点,在项目初期,没什么人留意因平台差别而带来的影响、工作量——不要怪我,因为那时我正被内核和根文件系统搞得头大,而且又没参与架构代码的编写。

    问题出现有2个原因,一是没注意eeprom和普通文件的操作上的区别,二是打开文件的框架代码封装得十分隐密(正因为封装得好,使人认为操作所有“文件”的代码都一样)。

    日志模块抽象后的示例代码如下:

    // 打开文件
    fp = fopen(MYFILE, "a+");
    // 读头部数据
    fread(MyHead, 1, sizeof(MyHead), fp)
    // 处理其它
    ...
    // 写入数据
    fwrite(szText, 1, sizeof(szText), fp)
    // 更新头部数据
    ...
    // 回到头部
    fseek(fp, 0, SEEK_SET)
    // 更新头部
    fwrite(MyHead, 1, sizeof(MyHead), fp)

    该模块使用文件前面的数据作为头部,保留了日志长度等关键信息。上位机读取才得到2行,是因为该头部中的日志长度字段除了第一次更新外,后面所有的写操作都没有更新——代码的确有更新“头部”,但即不是正在的头部,而是在日志数据后面添加。简单理解就是,最后的fseek并没有回到文件开头处,而是在文件结尾,于是fwrite就直接写到文件最后,这也解释了日志文件为什么会有乱码,因为那是头部数据。

    查了fopen的参数,“a+”关键点如下:

    “Repositioning operations (fseek, fsetpos, rewind) affects the next input operations, but output operations move the position back to the end of file. ”

    这句话最后是说光标都回到文件的末尾。因此,使用“a+”打开文件是不正确的。

    网上有文章(http://blog.csdn.net/flyfy1/article/details/4763347)说得很好,就直接抄下来了:

    r+ 和 w+ 的区别:

    r+ 是可以直接写在文件上,读取和写入的光标都在文件开头。

    w+ ,如果文件已经存在,将建立一个新文件覆盖原文件(很缺德啊……),并且支持读取。

    a+ 和 r+:

    a+只能在文件最后补充,光标在结尾。

    r+可以覆盖前面的内容,光标在开头


    最终的解决方法是,将原来代码的“a+”n改为“r+”,只改一个字符,即可解决问题。修改很简单,但知道修改的原因却要经过一番努力——而这,就是不为人知的背后的辛酸。

    参考资料:

    http://www.cplusplus.com/reference/cstdio/fopen/

    http://blog.csdn.net/flyfy1/article/details/4763347


    李迟,2015年1月17日 中午

    展开全文
  • 文件标识位的区别r、r+、ww+等

    千次阅读 2019-11-19 20:27:26
    函数功能: 打开一个文件 函数原型:FILE * fopen(const char * path,const char * mode); 相关函数:open,fclose,fopen_s,_wfopen 所需库: <stdio.h> 返回值: 文件顺利打开后,指向该流的文件指针就会...
  • r+ w+ a+ 这三都是读写模式打开文件,它们都可读可写,那么它们的区别在哪里呢? 首先,明显不同的是,a是追加的模式写入。 为更加清晰,列出下表: r+ w+ a+ 文件不存在 不创建 创建 创建 文件...
  • C语言文件 "w+"与"wb+"区别

    千次阅读 2021-05-21 17:49:37
    这是我今天碰到的问题,现在已经解决,希望我的整理能够帮助到你们!w+以纯文本方式读写,而wb+是二进制方式进行读写。...wb 只写方式打开或新建一个二进制文件,只允许写数据。wb+ 读写方式打开或建立...
  • a附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。a+ 附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,...
  • 关于文件操作的几种常用方式,网上已有很多解说,内容很丰富,...打开即默认创建一个文件,如果文件已存在,则覆盖写(即文件内原始数据会被新写入的数据清空覆盖)。 ‘w+’:写读。打开创建新文件并写入数据,如.
  • Open的第二个参数是一个字符串,想必大家都清楚,表示打开方式,主要就是读或者写: w方式打开, a:追加模式打开 (从 EOF 开始, 必要时创建新文件) r+:读写模式打开 w+:读写模式打开 (参见 w ) ...
  • open()a+模式开启一个附加读写模式的文件,由于是a,所以指针在文件末尾。此时如果做read(),则Python发现指针位置就是EOF,读取到空字符串。 在写入123之后,指针的位置是4,仍然是文件尾,文件在内存中是123...
  • Python3 文件打开方式 w, w+, a, a+, r, r+ 对打开文件进行读写操作时需要注意当前光标所在位置,对常用的几种打开方式总结内容如下: 打开方式 操作 效果 w 写 指针起始位置在文件首位在open文件动作后...
  • Python文件操作中的a,a+,ww+几种方式的区别

    万次阅读 多人点赞 2018-08-12 15:39:56
    步 排除文件打开方式错误: r只读,r+读写,不创建 w新建只写,w+新建读写,二者都会将文件内容清零 (以w方式打开,不能读出。w+可读写) w+与r+区别: r+:可读可写,若文件不存在,报错;w+: 可读可写,...
  • open() 函数 w+ 模式打开文件

    千次阅读 2019-01-11 10:21:00
    这种模式打开文件时,会先清空文件,然后才执行读写操作,当我们要执行读操作时,需要通过 seek() 方法将读取指针移到前面,才能读取...In [1]: data = open('1.txt', 'w+') # 读写模式打开文件 In [2]: data.r...
  • 文件操作:r r+ w w+ a a+

    千次阅读 2018-04-02 20:16:25
    r 打开只读文件,该文件必须存在。r+ 打开可读写的文件,该文件必须...a 附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。a+ 附加...
  • 文件的常用操作 1.1对文件的常用操作方法 对文件的基本操作步骤是:打开文件---->操作文件---->关闭文件文件的常用操作有r,r+,w,w+,a,a+ 1.2r不写对文件的操作方式默认是r 首先读取文件内容 1.3r+操作...
  • r只读,r+读写,不创建,即需要事先存在一个文件以供读/读写,若不存在文件会报错 w新建只写,w+新建读写,二者都会将文件内容清零,即事先不需要有该文件存在,若已经存在则会覆盖 (以w方式打开,不能读出。w+可...
  • 简述用“r”方式打开文件的特点

    千次阅读 2021-05-23 06:28:58
    简述用“r”方式打开文件的特点r+可读可写打开文件, 文件必须存在 a+同上, 不过如果文件存在, 就在文件后头写入, 如果不存在, 则创建文件 w+同上, 不过文件存在则将文件清空, 不存在就创建文件.c语言文件读写方式:两...
  • 一.总结 a:附加写,不可读。 a+:附加读写。追加写。 r:只读,最常用。不创建,不存在会报错。...r只读,r+读写,不创建,即需要事先存在一个文件以供读/读写,若不存在文件会报错 w新建只写,w+新建读写,二者都
  • python3 文件打开模式 + r+ a+

    千次阅读 2019-04-05 23:43:08
    文件打开模式 w+ r+ a+ 区别和辨析 w+ 打开文件并读写 1. 文件存在,则清空(也即写入空); 2. 文件不存在,则创建文件 ; 3. 文件流定位到开始位置, 所以read() 会得到空。 r+ 打开文件并读写 1. 文件存在,打开文件...
  • C语言文件打开模式浅析。
  • python使用Notepad++同时打开个文件

    千次阅读 2019-01-16 09:44:43
    有两个文件夹,文件夹中的文件名称包含一个数字index,想打开一个文件夹中的第i个文件的同时也打开文件2中的第i个文件。每次取两个文件夹同时找到两个文件很麻烦。决定用程序来实现。 自然就想到了批处理。 第一步...
  • 步 排除文件打开方式错误: r只读,r+读写,不创建 w新建只写,w+新建读写,二者都会将文件内容清零 (以w方式打开,不能读出。w+可读写) **w+与r+区别: r+:可读可写,若文件不存在,报错;w+...
  • 一般情况下对文件的基本操作步骤是:打开文件---->操作文件---->关闭文件文件的常用操作有r,r+,w,w+,a,a+ 接下来我将为大家一一讲解每操作 (1)r操作:(如果不写对文件的操作方式,默认情况下是r) 只能读,不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 668,572
精华内容 267,428
关键字:

以w+方式打开一个文件

友情链接: Statusbarprogrammin.rar