C语言文件操作中参数 r+ w+的区别

作者&投稿:夏俘 (若有异议请与网页底部的电邮联系)
c语言中,再对文件的操作模式中,a和a+、w和w+、r和r+有什么区别?~

这是文件操作中的mode应用问题。
fopen(打开文件)
相关函数 open,fclose
表头文件 #include
定义函数 FILE * fopen(const char * path,const char * mode);
函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。
返回值 文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno 中。
附加说明 一般而言,开文件后会作一些文件读取或写入的动作,若开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。
范例
#include
main()
{
FILE * fp;
fp=fopen(“noexist”,”a+”);
if(fp= =NULL) return;
fclose(fp);
}

希望可以帮到你!

一、含义不同:
r是只读,文件已存在,指针在文件头;r+是读写方式,读写指针都在文件头。w是只写方式,w+是读写方式建立新文件,读指针在文件头。a是追加方式打开文件,指针指向文件尾;a+是读写方式打开文件,读从文件开始,写从文件尾开始。
二、使用不同:
r:该文件必须存在。
r+:该文件必须存在。
w:若文件不存在则建立该文件。
w+:若文件不存在则建立该文件。

+: 读和写
凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。
用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。
若要向一个已存在的文件追加新的信息,用“a”方式打开文件。如果指定文件不存在则尝试创建该文件。
以上内容参考:百度百科-c语言fopen函数

当文件不存在时,r+不会创建,而会导致调用失败,但w+会创建。

如果文件存在,r+不会自动清空文件,但w+会自动把已有文件的内容清空。

另外,r+打开文件后,会把读写指针指向文件的开头,所以会覆盖已有的文件


怎么对C语言中的文件进行内容添加,删除,查找的操作?
c语言文件操作13.3 文件的打开与关闭 文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。 在C语言中,文件操作都是由库函数来完成的。在本章内将介绍主要的文...

C语言对文件操作,用fputs函数不能把字符串写入文件?
函数说明:从stream函数指针所指向的文件中,读取size-1个字节到buf缓存,不是读取size个字节,因为,buf[ ]缓存的第size个字节存放字符串结束符,形成一个有效的字符串。当读取到换行符时,或者到达文件末尾时,结束文件的读取操作。返回值:读取数据成功,返回存储数据的缓存地址,就是参数buf的地址。

如何用C语言读写文件
c语言读写文件程序:include "stdio.h"include <stdlib.h>main(){ FILE *fp1;\/\/定义文件流指针,用于打开读取的文件 FILE *fp2;\/\/定义文件流指针,用于打开写操作的文件 char text[1024];\/\/定义一个字符串数组,用于存储读取的字符 fp1 = fopen("d:\\\\a.txt","r");\/\/只读方式打开文件a....

C语言关于文件操作的问题:下面是代码:
fscanf(pfile,"%d",&i);使用fscanf对文件进行读取时,如果用%d进行格式,就是要读取整型,并把值赋值给变量i 这同scanf一样,遇到空白字符或者回车时停止读入,这样,第一次读入就是123456789123456 这远远超过Int定义的最大值(32位机,2^31-1),所以将进行截取,会出现负数,而 123456在其范围,能...

C语言文件操作怎么把文件1中读出的内容写到文件2中 悬赏分:0 | 离问...
步骤如下:首先同时打开文件1和2,1文件为只读方式,2文件为只写方式 从文件1头开始读,循环直到文件1尾部,读出一个字节,就往2中写出一个 至于不是一个函数,也很方便,用一个全局变量保存读出的内容,然后在循环中将读的和写的轮换调用就可以了 ...

关于C语言的文件操作
FILE* pf ;int n;char buf[1024];char type[5],name[10],price[10],Bdate[20],state[10],Ddate[20];pf=fopen...\/\/省了 fgets(buf,1023,pf);fscanf(pf,"%d%s%s%s",&n,type,name,price,Bdate,state,Ddate);

C语言文件那块的if((fp=fopen(filepath,"w"))==NULL)中为什么不用
1.if当中应该使用((fp=fopen(filepath,"w"))!=NULL),当返回的指针不等于NULL时,表示文件被正确打开。2.fopen的函数原型:FILE * fopen(const char * path,const char * mode); fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:r 以只读方式打开文件,该文件必须...

在C语言中文件的存取方式是什么?
在C语言中,打开文件可以指定文件的存取方式。打开用函数fopen。其原型为:FILE * fopen(const char * path,const char * mode);需要包含头文件stdio.h。当打开成功时会返回FILE *指针,用于后续文件的读写关闭等操作。参数path为文件的路径及文件名。mode即存取方式,包括:1、r 以只读方式打开文件...

C语言中对文件进行读写操作必须先将文件怎么办
要先声明一个文件指针,然后利用fopen函数打开文件,该函数打开文件成功会返回一个指向该流的文件指针,然后通过文件指针对文件进行操作,最后在通过fclose函数来关闭流并释放文件指针。fopen函数原型:FILE * fopen(const char * path,const char * mode);第一个参数是路径,第二个参数是打开文件的方式,...

C语言 文件操作问题
C语言中对文件进行操作必须首先打开文件,打开文件主要涉及到fopen函数。fopen函数的原型为 FILE* fopen(const char *path,const char *mode) 其中path为文件路径,mode为打开方式 1)对于文件路径,只需注意若未明确给出绝对路径,则默认该文件在工程的目录下。若需给出绝对路径,则注意转义字符'\\',比如有文件test.txt...

洛扎县15197073124: C语言文件打开时 w+和r+有什么不同..除了一个要求文件必须存在 一个没要求外.. -
濯天四环: 当文件不存在时,r+不会创建,而会导致调用失败,但w+会创建. 如果文件存在,r+不会自动清空文件,但w+会自动把已有文件的内容清空. 另外,r+打开文件后,会把读写指针指向文件的开头,所以会覆盖已有的文件 所以说,你的例子中,以r+方式打开,输入d,文件内容会变为dbc;以w+方式则会变为d. 像这样的问题,你自己要去试试就知道了.

洛扎县15197073124: c语言文件操打开方式里,“r+w”写入的字符放在文件的什么地方,是和追加一样吗? -
濯天四环: “r+w”方式,从文件当前位置开始写.1.打开文件,没有做任何处理,那么从文件开始位置写.会覆盖原来内容哦2.打开文件,使用fseek,lseek函数移动了文件当前偏移量,那么从文件当前偏移量位置开始写,会覆盖原来内容.使用"a"方式,是追加方式写,从文件末尾位置开始写.

洛扎县15197073124: 请问一下在C语言中,r+和w+,及a+这三个操作有哪些区别?
濯天四环: r+ 以可读写方式打开文件,该文件必须存在. w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失.若文件不存在则建立该文件. a+ 以附加方式打开可读写的文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留. (原来的EOF符不保留)

洛扎县15197073124: c语言文件问题: 1."rb"与 "r"的含义分别是什么 2.while(!feof(fp))是什么意思? -
濯天四环: "r".为读而打开文本文件.(不存在则出错) "rb".为读而打开二进制文件 while(!feof(fp)) 文件到尾判断最常用的文件使用方式及其含义如下: "r".为读而打开文本文件.(不存在则出错) "rb".为读而打开二进制文件. "w".为写而打开文本...

洛扎县15197073124: C语言使用文件的符号和意义. -
濯天四环: r为以只读方式打开文件 w为以只写方式打开文件 r+为可读写方式打开 w+为可读写方式打开 加b为以二进制方式打开

洛扎县15197073124: C语言中w、w+,r、r+的问题 -
濯天四环: r打开已存在文本文件;w,r+打开文本文件,如果文件不存在,w新建一个,r+出错;w+建立一个新的文本文件.r只读,w只写,r+、w+读写.

洛扎县15197073124: r,w,a+,r+在C语言中各自表示什么意思?
濯天四环: 对于文件使用方式有以下几点说明: 1)文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是: r(read): 读 w(write): 写 +: 读和写 a(append): 追加 t(text): 文本文件,可省略不写 b(banary): 二进制文件 2)用“r”打开一个文件时,...

洛扎县15197073124: C语言 fopen()函数的mode取值“r”和“w”时,它们之间的差别是? -
濯天四环: C语言 fopen()函数的mode取值“r”和“w”时,它们之间的差别是:已存在文件不同、不存在文件不同、操作不同. 一、已存在文件不同 1、“r”:“r”对于已存在的文件,直接打开. 2、“w”:“w”对于已存在的文件,需要将内容清空. 二、不存在文件不同 1、“r”:“r”针对的文件必须存在,不存在就不能执行读取操作. 2、“w”:“w”针对的文件可以不存在,不存在就新建一个文本文件. 三、操作不同 1、“r”:“r”只允许进行“读”操作. 2、“w”:“w”只允许进行“写”操作.

洛扎县15197073124: C语言中,编程用到r w rb wb r+等的时候怎么分辨是用r呢还是用rb,怎么区分是二 -
濯天四环: 文件打开方式 r-read读 w-write写 a-在文件末尾追加数据 b-bite二进制文件 t-text文本文件 r+读写 w+写读 其他的只要把这些组合在一起就行了 好比rt rb wt wb rb+ 而如at+可以这样记 a-在文件末尾追加数据 +(写的反面是读) 所以at+表示 打开一个文本文件,允许读或者在文件末尾追加数据

洛扎县15197073124: C语言中,fopen()函数中,r还有w代表什么操作,类似的还有哪些? -
濯天四环: 我估计LZ是想说的是freopen()吧 freopen(arg1,arg2,arg3)是c语言的打开文件的方式,含有三个参数 arg1:表示的是打开文件的路径 arg2:表示“w”或者"r",表示打开文件的方式,读或者写 arg3:为stdin或者stdout表示标准输入或者输出.例如fropen("1.txt","r",stdin) 的意思是以标准读的方式打开当前路径下的1.txt文件.至于有没有其他类似的,是这样的,每个人见都有不同的打开文件的方式,但原理都一样,显示读入流,在做相应的转换,比如转成string什么的,只不过函数名不一样而已.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网