在C语言的文件中,像r,w,a,r+,w+,a+分别是什么意思,前面三者与后面三者有什么区别吗? r,w,a+,r+在C语言中各自表示什么意思?

c\u8bed\u8a00\u4e2d\uff0c\u518d\u5bf9\u6587\u4ef6\u7684\u64cd\u4f5c\u6a21\u5f0f\u4e2d\uff0ca\u548ca+\u3001w\u548cw+\u3001r\u548cr+\u6709\u4ec0\u4e48\u533a\u522b\uff1f

\u8fd9\u662f\u6587\u4ef6\u64cd\u4f5c\u4e2d\u7684mode\u5e94\u7528\u95ee\u9898\u3002
fopen\uff08\u6253\u5f00\u6587\u4ef6\uff09
\u76f8\u5173\u51fd\u6570 open\uff0cfclose
\u8868\u5934\u6587\u4ef6 #include
\u5b9a\u4e49\u51fd\u6570 FILE * fopen(const char * path,const char * mode);
\u51fd\u6570\u8bf4\u660e \u53c2\u6570path\u5b57\u7b26\u4e32\u5305\u542b\u6b32\u6253\u5f00\u7684\u6587\u4ef6\u8def\u5f84\u53ca\u6587\u4ef6\u540d\uff0c\u53c2\u6570mode\u5b57\u7b26\u4e32\u5219\u4ee3\u8868\u7740\u6d41\u5f62\u6001\u3002
mode\u6709\u4e0b\u5217\u51e0\u79cd\u5f62\u6001\u5b57\u7b26\u4e32:
r \u6253\u5f00\u53ea\u8bfb\u6587\u4ef6\uff0c\u8be5\u6587\u4ef6\u5fc5\u987b\u5b58\u5728\u3002
r+ \u6253\u5f00\u53ef\u8bfb\u5199\u7684\u6587\u4ef6\uff0c\u8be5\u6587\u4ef6\u5fc5\u987b\u5b58\u5728\u3002
w \u6253\u5f00\u53ea\u5199\u6587\u4ef6\uff0c\u82e5\u6587\u4ef6\u5b58\u5728\u5219\u6587\u4ef6\u957f\u5ea6\u6e05\u4e3a0\uff0c\u5373\u8be5\u6587\u4ef6\u5185\u5bb9\u4f1a\u6d88\u5931\u3002\u82e5\u6587\u4ef6\u4e0d\u5b58\u5728\u5219\u5efa\u7acb\u8be5\u6587\u4ef6\u3002
w+ \u6253\u5f00\u53ef\u8bfb\u5199\u6587\u4ef6\uff0c\u82e5\u6587\u4ef6\u5b58\u5728\u5219\u6587\u4ef6\u957f\u5ea6\u6e05\u4e3a\u96f6\uff0c\u5373\u8be5\u6587\u4ef6\u5185\u5bb9\u4f1a\u6d88\u5931\u3002\u82e5\u6587\u4ef6\u4e0d\u5b58\u5728\u5219\u5efa\u7acb\u8be5\u6587\u4ef6\u3002
a \u4ee5\u9644\u52a0\u7684\u65b9\u5f0f\u6253\u5f00\u53ea\u5199\u6587\u4ef6\u3002\u82e5\u6587\u4ef6\u4e0d\u5b58\u5728\uff0c\u5219\u4f1a\u5efa\u7acb\u8be5\u6587\u4ef6\uff0c\u5982\u679c\u6587\u4ef6\u5b58\u5728\uff0c\u5199\u5165\u7684\u6570\u636e\u4f1a\u88ab\u52a0\u5230\u6587\u4ef6\u5c3e\uff0c\u5373\u6587\u4ef6\u539f\u5148\u7684\u5185\u5bb9\u4f1a\u88ab\u4fdd\u7559\u3002
a+ \u4ee5\u9644\u52a0\u65b9\u5f0f\u6253\u5f00\u53ef\u8bfb\u5199\u7684\u6587\u4ef6\u3002\u82e5\u6587\u4ef6\u4e0d\u5b58\u5728\uff0c\u5219\u4f1a\u5efa\u7acb\u8be5\u6587\u4ef6\uff0c\u5982\u679c\u6587\u4ef6\u5b58\u5728\uff0c\u5199\u5165\u7684\u6570\u636e\u4f1a\u88ab\u52a0\u5230\u6587\u4ef6\u5c3e\u540e\uff0c\u5373\u6587\u4ef6\u539f\u5148\u7684\u5185\u5bb9\u4f1a\u88ab\u4fdd\u7559\u3002
\u4e0a\u8ff0\u7684\u5f62\u6001\u5b57\u7b26\u4e32\u90fd\u53ef\u4ee5\u518d\u52a0\u4e00\u4e2ab\u5b57\u7b26\uff0c\u5982rb\u3001w+b\u6216ab\uff0b\u7b49\u7ec4\u5408\uff0c\u52a0\u5165b \u5b57\u7b26\u7528\u6765\u544a\u8bc9\u51fd\u6570\u5e93\u6253\u5f00\u7684\u6587\u4ef6\u4e3a\u4e8c\u8fdb\u5236\u6587\u4ef6\uff0c\u800c\u975e\u7eaf\u6587\u5b57\u6587\u4ef6\u3002\u4e0d\u8fc7\u5728POSIX\u7cfb\u7edf\uff0c\u5305\u542bLinux\u90fd\u4f1a\u5ffd\u7565\u8be5\u5b57\u7b26\u3002\u7531fopen()\u6240\u5efa\u7acb\u7684\u65b0\u6587\u4ef6\u4f1a\u5177\u6709S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)\u6743\u9650\uff0c\u6b64\u6587\u4ef6\u6743\u9650\u4e5f\u4f1a\u53c2\u8003umask\u503c\u3002
\u8fd4\u56de\u503c \u6587\u4ef6\u987a\u5229\u6253\u5f00\u540e\uff0c\u6307\u5411\u8be5\u6d41\u7684\u6587\u4ef6\u6307\u9488\u5c31\u4f1a\u88ab\u8fd4\u56de\u3002\u82e5\u679c\u6587\u4ef6\u6253\u5f00\u5931\u8d25\u5219\u8fd4\u56deNULL\uff0c\u5e76\u628a\u9519\u8bef\u4ee3\u7801\u5b58\u5728errno \u4e2d\u3002
\u9644\u52a0\u8bf4\u660e \u4e00\u822c\u800c\u8a00\uff0c\u5f00\u6587\u4ef6\u540e\u4f1a\u4f5c\u4e00\u4e9b\u6587\u4ef6\u8bfb\u53d6\u6216\u5199\u5165\u7684\u52a8\u4f5c\uff0c\u82e5\u5f00\u6587\u4ef6\u5931\u8d25\uff0c\u63a5\u4e0b\u6765\u7684\u8bfb\u5199\u52a8\u4f5c\u4e5f\u65e0\u6cd5\u987a\u5229\u8fdb\u884c\uff0c\u6240\u4ee5\u5728fopen()\u540e\u8bf7\u4f5c\u9519\u8bef\u5224\u65ad\u53ca\u5904\u7406\u3002
\u8303\u4f8b
#include
main()
{
FILE * fp;
fp=fopen(\u201cnoexist\u201d,\u201da+\u201d);
if(fp= =NULL) return;
fclose(fp);
}

\u5e0c\u671b\u53ef\u4ee5\u5e2e\u5230\u4f60\uff01

\u5bf9\u4e8e\u6587\u4ef6\u4f7f\u7528\u65b9\u5f0f\u6709\u4ee5\u4e0b\u51e0\u70b9\u8bf4\u660e\uff1a

1)\u6587\u4ef6\u4f7f\u7528\u65b9\u5f0f\u7531r,w,a,t,b,+\u516d\u4e2a\u5b57\u7b26\u62fc\u6210\uff0c\u5404\u5b57\u7b26\u7684\u542b\u4e49\u662f\uff1a

r(read): \u8bfb
w(write): \u5199
+: \u8bfb\u548c\u5199
a(append): \u8ffd\u52a0
t(text): \u6587\u672c\u6587\u4ef6\uff0c\u53ef\u7701\u7565\u4e0d\u5199
b(banary): \u4e8c\u8fdb\u5236\u6587\u4ef6



2)\u7528\u201cr\u201d\u6253\u5f00\u4e00\u4e2a\u6587\u4ef6\u65f6\uff0c\u8be5\u6587\u4ef6\u5fc5\u987b\u5df2\u7ecf\u5b58\u5728\uff0c\u4e14\u53ea\u80fd\u4ece\u8be5\u6587\u4ef6\u8bfb\u51fa\u3002

3)\u7528\u201cw\u201d\u6253\u5f00\u7684\u6587\u4ef6\u53ea\u80fd\u5411\u8be5\u6587\u4ef6\u5199\u5165\u3002\u82e5\u6253\u5f00\u7684\u6587\u4ef6\u4e0d\u5b58\u5728\uff0c\u5219\u4ee5\u6307\u5b9a\u7684\u6587\u4ef6\u540d\u5efa\u7acb\u8be5\u6587\u4ef6\uff0c\u82e5\u6253\u5f00\u7684\u6587\u4ef6\u5df2\u7ecf\u5b58\u5728\uff0c\u5219\u5c06\u8be5\u6587\u4ef6\u5220\u53bb\uff0c\u91cd\u5efa\u4e00\u4e2a\u65b0\u6587\u4ef6\u3002

4)\u82e5\u8981\u5411\u4e00\u4e2a\u5df2\u5b58\u5728\u7684\u6587\u4ef6\u8ffd\u52a0\u65b0\u7684\u4fe1\u606f\uff0c\u53ea\u80fd\u7528\u201ca\u201d\u65b9\u5f0f\u6253\u5f00\u6587\u4ef6\u3002\u4f46\u6b64\u65f6\u8be5\u6587\u4ef6\u5fc5\u987b\u662f\u5b58\u5728\u7684\uff0c\u5426\u5219\u5c06\u4f1a\u51fa\u9519\u3002

5)\u5728\u6253\u5f00\u4e00\u4e2a\u6587\u4ef6\u65f6\uff0c\u5982\u679c\u51fa\u9519\uff0cfopen\u5c06\u8fd4\u56de\u4e00\u4e2a\u7a7a\u6307\u9488\u503cNULL\u3002\u5728\u7a0b\u5e8f\u4e2d\u53ef\u4ee5\u7528\u8fd9\u4e00\u4fe1\u606f\u6765\u5224\u522b\u662f\u5426\u5b8c\u6210\u6253\u5f00\u6587\u4ef6\u7684\u5de5\u4f5c\uff0c\u5e76\u4f5c\u76f8\u5e94\u7684\u5904\u7406\u3002

一、含义不同:

r是只读,文件已存在,指针在文件头;r+是读写方式,读写指针都在文件头。w是只写方式,w+是读写方式建立新文件,读指针在文件头。a是追加方式打开文件,指针指向文件尾;a+是读写方式打开文件,读从文件开始,写从文件尾开始。

二、使用不同:

r:该文件必须存在。

r+:该文件必须存在。

w:若文件不存在则建立该文件。

w+:若文件不存在则建立该文件。

+: 读和写

凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。

用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。

若要向一个已存在的文件追加新的信息,用“a”方式打开文件。如果指定文件不存在则尝试创建该文件。

以上内容参考:百度百科-c语言fopen函数



r 打开只读文件,该文件必须存在。

r+ 打开可读写复的文件,该文件必须存在。

w 打开只写文件,若文件存在则文件长度清为0,即制该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立百该文件。

a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

a+ 以附加方式打开可读写的文度件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

扩展资料:

C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。

C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。

C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。

参考资料来源:百度资料—C语言



r是只读,文件已存在,指针在文件头;r+是读写方式,读写指针都在文件头。w是只写方式,w+是读写方式建立新文件,读指针在文件头。a是追加方式打开文件,指针指向文件尾;a+是读写方式打开文件,读从文件开始,写从文件尾开始。

r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

  • 鍦╟璇█涓鎵撳紑鏂囦欢鏃,a浠h〃杩藉姞鐨勬剰鎬濄傝拷鍔犳槸鎸囩殑浠涔堟剰鎬濄 鍜r鍙 ...
    绛旓細浠ヨ拷鍔犳柟寮忔墦寮鏂囦欢鏃讹紝瀹冩槸浠ラ檮鍔犵殑鏂瑰紡鏂瑰紡鎵撳紑鍙啓鏂囦欢锛濡傛灉鏂囦欢涓嶅瓨鍦ㄥ氨浼氬缓绔嬭繖涓枃浠讹紝濡傛灉鏂囦欢宸茬粡瀛樺湪锛屽啓鍏ョ殑鏁版嵁灏变細琚拷鍔犲埌鏂囦欢鏈熬锛屼篃灏辨槸鍘熸枃浠跺師鍏堢殑鍐呭浼氫繚鐣欍傚鏋滄槸浣犲彧璇绘柟寮忔墦寮鏂囦欢锛岃繖涓枃浠跺氨蹇呴』瀛樺湪锛屽鏋滀笉瀛樺湪锛屾墦寮鏂囦欢澶辫触杩斿洖鍑洪敊浠g爜銆
  • C璇█鏂囦欢鍏抽棴涓庢墦寮涓,r +,a+ 鏈変粈涔堝尯鍒
    绛旓細wb 鍙啓 涓鸿緭鍑烘墦寮涓涓簩杩涘埗鏂囦欢 ab 杩藉姞 鍚戜簩杩涘埗鏂囦欢灏炬坊鍔犳暟鎹 r+ 璇诲啓 涓鸿鍐欐墦寮涓涓枃鏈枃浠讹紙鏂囦欢蹇呴』宸茬粡瀛樺湪锛墂+ 璇诲啓 涓鸿鍐欏缓绔嬩竴涓柊鐨勬枃鏈枃浠 a+ 璇诲啓 涓鸿鍐欐墦寮涓涓枃鏈枃浠讹紙璇诲啓鎸囬拡瀹氫綅鍦ㄦ渶鍚庯級rb+ 璇诲啓 涓鸿鍐欐墦寮涓涓簩杩涘埗鏂...
  • c璇█涓wb,rb鏄粈涔堟剰鎬
    绛旓細wb浠h〃浜岃繘鍒舵ā寮鏂囦欢锛鍏佽鍐欏叆鏂囦欢锛宺b浠h〃浜岃繘鍒舵ā寮忥紝鍏佽璇诲彇鏂囦欢銆傚舰鎬佸瓧绗︿覆閮藉彲浠ュ啀鍔犱竴涓 b 瀛楃锛屽 rb銆亀+b 鎴 ab+ 绛夌粍鍚堬紝鍔犲叆 b 瀛楃鐢ㄦ潵鍛婅瘔鍑芥暟搴撲互浜岃繘鍒舵ā寮忔墦寮鏂囦欢銆傚鏋滀笉鍔 b锛岃〃绀洪粯璁ゅ姞浜 t锛屽嵆 rt銆亀t锛屽叾涓 t 琛ㄧず浠ユ枃鏈ā寮忔墦寮鏂囦欢銆傜敱 fopen() 鎵寤虹珛鐨勬柊鏂囦欢浼...
  • C璇█涓浠ヨ拷鍔犳柟寮忔墦寮涓涓鏂囦欢搴旈夋嫨_()A銆佲r鈥 B銆佲渨鈥 C銆佲渞b...
    绛旓細C璇█涓浠ヨ拷鍔犳柟寮忔墦寮涓涓鏂囦欢搴旈夋嫨鈥渁鈥濆弬鏁般傛墦寮鏂囦欢涔嬪悗锛岀▼搴忓彲浠ュ緱鍒版枃浠剁殑鐩稿叧淇℃伅锛屼緥濡傚ぇ灏忋佺被鍨嬨佹潈闄愩佸垱寤鸿呫佹洿鏂版椂闂寸瓑銆傚湪鍚庣画璇诲啓鏂囦欢鐨勮繃绋嬩腑锛岀▼搴忚繕鍙互璁板綍褰撳墠璇诲啓鍒颁簡鍝釜浣嶇疆锛屼笅娆″彲浠ュ湪姝ゅ熀纭涓婄户缁搷浣溿
  • C璇█鏂囦欢浣跨敤鏂瑰紡涓殑鈥r鈥濅笌鈥渨鈥濇槸浠涔堟剰鎬?鎯抽棶涓嬫垜鐨勭悊瑙e涓嶅...
    绛旓細r 鏄痳ead鐨勭缉鍐欙紝灏辨槸浠鏂囦欢閲岄潰璇 w鏄痺rite鐨勭缉鍐欙紝灏辨槸寰鏂囦欢閲岄潰鍐 浣犺緭鍏ョ殑鏁版嵁涔熸槸閫氳繃缂栫▼鍐欒繘鍘荤殑锛屼笉浼氬嚭鐜伴粦妗嗘杩欑浜や簰鐣岄潰銆備綘鍙互浠庝功涓婃妱涓娈电▼搴忚嚜宸辫繍琛屼竴涓嬶紝灏辨噦浜哋(鈭鈭)O
  • C璇█鏂囦欢涓,鈥渞b鈥濆拰鈥r鈥濇湁浠涔堝尯鍒?
    绛旓細涓夈佷紭鍔d笉鍚 1銆乺b锛氫簩杩涘埗鏂囦欢姣旇緝鑺傜害绌洪棿锛岃繖涓よ呭偍瀛樺瓧绗﹀瀷鏁版嵁鏃跺苟娌℃湁宸埆銆備絾鏄湪鍌ㄥ瓨鏁板瓧锛岀壒鍒槸瀹炲瀷鏁板瓧鏃讹紝浜岃繘鍒舵洿鑺傜渷绌洪棿銆2銆r锛氭枃鏈枃浠跺瓨鍦ㄤ簬璁$畻鏈虹郴缁熶腑锛岄氬父鍦ㄦ枃鏈枃浠舵渶鍚庝竴琛屾斁缃枃浠剁粨鏉熸爣蹇椼傛枃鏈枃浠剁殑缂栫爜鍩轰簬瀛楃瀹氶暱锛岃瘧鐮佺浉瀵硅瀹规槗涓浜涖傚弬鑰冭祫鏂欐潵婧愶細鐧惧害鐧剧-浜岃繘鍒舵枃浠 ...
  • c璇█鏂囦欢鎿嶆墦寮鏂瑰紡閲,鈥r+w鈥濆啓鍏ョ殑瀛楃鏀惧湪鏂囦欢鐨勪粈涔堝湴鏂,鏄拰杩藉姞...
    绛旓細鈥r+w鈥濇柟寮忥紝浠庢枃浠跺綋鍓嶄綅缃紑濮嬪啓銆1.鎵撳紑鏂囦欢锛娌℃湁鍋氫换浣曞鐞嗭紝閭d箞浠庢枃浠跺紑濮嬩綅缃啓銆備細瑕嗙洊鍘熸潵鍐呭鍝 2.鎵撳紑鏂囦欢锛屼娇鐢╢seek锛宭seek鍑芥暟绉诲姩浜嗘枃浠跺綋鍓嶅亸绉婚噺锛岄偅涔堜粠鏂囦欢褰撳墠鍋忕Щ閲忎綅缃紑濮嬪啓锛屼細瑕嗙洊鍘熸潵鍐呭銆備娇鐢"a"鏂瑰紡锛屾槸杩藉姞鏂瑰紡鍐欙紝浠庢枃浠舵湯灏句綅缃紑濮嬪啓銆
  • c璇█,wt鍜宺t涓鐨則鏄粈涔堟剰鎬
    绛旓細杩欐槸C璇█鏂囦欢鏍囧噯I/O鍑芥暟鐨勬帶鍒剁锛宼琛ㄧず浠ユ枃鏈ā寮忔墦寮鏂囦欢銆傗渞t鈥濓細鍙鎵撳紑涓涓枃鏈鏂囦欢锛鍙厑璁歌鏁版嵁 鈥渨t鈥濓細鍙啓鎵撳紑鎴栧缓绔嬩竴涓枃鏈枃浠讹紝鍙厑璁稿啓鏁版嵁 鍙﹀甯哥敤鐨勮繕鏈夊涓嬪嚑涓細"r"(鍙)锛 涓鸿緭鍏ユ墦寮涓涓枃鏈枃浠讹紝涓嶅瓨鍦ㄥ垯澶辫触 "w"(鍙啓)锛 涓鸿緭鍑烘墦寮涓涓枃鏈枃浠讹紝涓嶅瓨鍦ㄥ垯鏂板缓...
  • 鍦–璇█涓枃浠鐨勫瓨鍙栨柟寮忔槸浠涔?
    绛旓細鍦–璇█涓紝鎵撳紑鏂囦欢鍙互鎸囧畾鏂囦欢鐨勫瓨鍙栨柟寮忋傛墦寮鐢ㄥ嚱鏁癴open銆傚叾鍘熷瀷涓猴細FILE * fopen(const char * path,const char * mode);闇瑕佸寘鍚ご鏂囦欢stdio.h銆傚綋鎵撳紑鎴愬姛鏃朵細杩斿洖FILE *鎸囬拡锛岀敤浜庡悗缁枃浠剁殑璇诲啓鍏抽棴绛夋搷浣溿傚弬鏁皃ath涓烘枃浠剁殑璺緞鍙婃枃浠跺悕銆俶ode鍗冲瓨鍙栨柟寮忥紝鍖呮嫭锛1銆r 浠ュ彧璇绘柟寮忔墦寮鏂囦欢...
  • C璇█涓鎶婃暟鎹偍瀛樺湪txt鏂囦欢鏃,鍘熸潵txt涓殑鍐呭琚鐩栦簡銆
    绛旓細浣爁open鍑芥暟閫夋嫨鐨勬槸鍙傛暟涓嶅閫犳垚鐨勩鍦–璇█涓紝杩欎釜鍑芥暟鐨勫弬鏁扮敱r,w,a,t,b锛+鍏釜瀛楃鎷兼垚锛屽悇瀛楃鐨勫惈涔夋槸锛歳(read):璇 w(write):鍐 a(append):杩藉姞 t(text):鏂囨湰鏂囦欢锛屽彲鐪佺暐涓嶅啓 b(binary):浜岃繘鍒舵枃浠 +:璇诲拰鍐 浣犲湪鍙傛暟涓偗瀹氭病鏈変娇鐢╝锛屾墍浠ヤ笉鏄拷鍔狅紝鑰屾槸浠庡ご鍐欏叆浜嗐
  • 扩展阅读:c++语言大全 ... c语言零基础自学 ... 编程必背100个代码 ... c++完整代码 ... 文件写入c语言 ... c语言中所有符号大全 ... c语言必背100代码 ... c语言基础知识必背 ... c++编辑 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网