首页 > 试题广场 >

用fopen("file","r+");打开的文件"file

[单选题]
用fopen("file","r+");打开的文件"file"可以进行修改。 ()
  • 正确
  • 错误
函数:fopen
函数原型:FILE * fopen(const char * path,const char * mode);
返回值:文件顺利打开后,向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。
一般而言,打开文件后会做一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。
参数说明:
参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
“r” 以只读方式打开文件,该文件必须存在。
“r+” 以可读写方式打开文件,该文件必须存在。
”rb+“ 读写打开一个二进制文件,允许读写数据(可以任意修改),文件必须存在。
“w” 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
“w+” 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
“a” 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
”a+“ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
“wb” 只写打开或新建一个二进制文件;只允许写数据(若文件存在则文件长度清为零,即该文件内容会消失)。
“wb+” 读写打开或建立一个二进制文件,允许读和写(若文件存在则文件长度清为零,即该文件内容会消失)
“wx” 创建文本文件,只允许写入数据.[C11]
“wbx” 创建一个二进制文件,只允许写入数据.[C11]
”w+x“ 创建一个文本文件,允许读写.[C11]
“wb+x” 创建一个二进制文件,允许读写.[C11]
“w+bx” 和"wb+x"相同[C11]
“rt” 只读打开一个文本文件,只允许读数据
“wt” 只写打开或建立一个文本文件,只允许写数据
“at” 追加打开一个文本文件,并在文件末尾写数据
“rb” 只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+” 读写打开一个文本文件,允许读和写
“wt+” 读写打开或建立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或在文件末追加数据
“rb+” 读写打开一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据
发表于 2017-06-14 19:23:21 回复(0)

r: 以只读权限打开文件,如果文件不存在则打开失败
r+: 在r的基础上加入写权限
w: 以只写权限打开文件,如果文件存在则清空写入,如果文件不存在则创建
w+: 在w的基础上加入读权限
a: 以只写权限打开文件,如果文件存在则在末尾追加写入,如果文件不存在则创建
a+: 在a的基础上加入读权限

发表于 2020-11-19 11:17:39 回复(0)
对比 r+ 和 w+
相同点:
1.两者都是可读写
2.两者都是从文件头开始写
3.两者都是当文件不存在则创建文件
区别:
r+直接在原文上覆盖,未覆盖的字符保留
w+先将原文清零,再写入
事实上
可以真正的操作是
w+会在覆盖的文字最后加eof
r+则不加
这样达到了各自的目的而不需要进行memset清零内存

发表于 2017-09-11 11:19:46 回复(1)
发表于 2019-08-09 10:29:24 回复(0)
fopen
“r” 以只读方式打开文件,该文件必须存在。
“r+” 以可读写方式打开文件,该文件必须存在。
”rb+“ 读写打开一个二进制文件,允许读写数据(可以任意修改),文件必须存在。
“w” 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
“w+” 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
发表于 2017-05-19 19:43:06 回复(0)
fopen打开后可以进行读写操作
发表于 2021-03-29 08:53:04 回复(0)
说的有点问题是不是?,这文件没格式也能进行修改?
发表于 2019-06-08 14:45:21 回复(0)