C語言檔案操作中引數r w 的區別

2021-05-06 04:39:10 字數 5090 閱讀 5224

1樓:匿名使用者

當檔案不存在時,r+不會建立,而會導致呼叫失敗,但w+會建立。

如果檔案存在,r+不會自動清空檔案,但w+會自動把已有檔案的內容清空。

另外,r+開啟檔案後,會把讀寫指標指向檔案的開頭,所以會覆蓋已有的檔案

c語言中,再對檔案的操作模式中,a和a+、w和w+、r和r+有什麼區別?

2樓:傲笑紅塵

這是檔案操作中的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()

希望可以幫到你!

3樓:多想失去

r 開啟唯讀檔案,該檔案必須存在。r+ 開啟可讀寫的檔案,該檔案必須存在。

w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。

若檔案不存在則建立該檔案。

a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。a+ 以附加方式開啟可讀寫的檔案。

若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。

補充:a和a+、w和w+、r和r+是mode幾種形態字串。

4樓:匿名使用者

a和a+如果指定的檔案不存在,會出錯,而不會建立新檔案

5樓:匿名使用者

物理科學巨人霍金去世,您身體受困於輪椅,思想卻能遨遊宇宙,希望您在那邊能身體和思想都能真正自由翱翔,讓時間永留簡史吧,讓黑洞發出「聲響」吧。

r:以唯讀的方式開啟文字檔案,檔案必須存在;

w:以只寫的方式開啟文字檔案,檔案若存在則清空檔案內容從檔案頭部開始寫,若不存在則根據檔名建立新檔案並只寫開啟;

a:以只寫的方式開啟文字檔案,檔案若存在則從檔案尾部以追加的方式開始寫,檔案原來存在的內容不會清除(除了檔案尾標誌eof),若不存在則根據檔名建立新檔案並只寫開啟;

r+:以可讀寫的方式開啟文字檔案,檔案必須存在;

w+:以可讀寫的方式開啟文字檔案,其他與w一樣;

a+:以可讀寫的方式開啟文字檔案,其他與a一樣;

若開啟二進位制檔案,可在後面加個b註明,其他一樣,如rb,r+b(或rb+)。

再次緬懷霍金。

在c語言的檔案中,像r,w,a,r+,w+,a+分別是什麼意思,前面三者與後面三者有什麼區別嗎?

6樓:雲盤雲存

r 開啟唯讀檔案,該檔案必須存在。

r+ 開啟可讀寫復的檔案,該檔案必須存在。

w 開啟只寫檔案,若檔案存在則檔案長度清為0,即製該檔案內容會消失。若檔案不存在則建立該檔案。

w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立百該檔案。

a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。

a+ 以附加方式開啟可讀寫的文度件。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。

7樓:匿名使用者

r是唯讀,檔案已存在,指標在檔案頭;r+是讀寫方式,讀寫指標都在檔案頭。w是只寫方式,w+是讀寫方式建立新檔案,讀指標在檔案頭。a是追加方式開啟檔案,指標指向檔案尾;a+是讀寫方式開啟檔案,讀從檔案開始,寫從檔案尾開始。

fopen中r+和w+的區別

8樓:千公尺完結

r+: open for reading and writing. the stream is positioned at the beginning of the file.

w+:open for reading and writing. the file is created if it does not exist, otherwise it is truncated.

the stream is positioned at the beginning of the file.

r+具有讀寫

屬性,從檔案頭開始寫,保留原檔案中沒有被覆蓋的內容;

w+具有讀寫屬性,寫的時候如果檔案存在,會被清空,從頭開始寫。

r 開啟唯讀檔案,該檔案必須存在。

r+ 開啟可讀寫的檔案,該檔案必須存在。

w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。

w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。

a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。

a+ 以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。

上述的形態字串都可以再加乙個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函式庫開啟的檔案為二進位制檔案,而非純文字檔案。不過在posix系統,包含linux都會忽略該字元。

c語言檔案 "w+"與"wb+"區別

9樓:苦力怕帶你環遊世界

w+以純文字方式讀寫,而wb+是以二進位制方式進行讀寫。

mode說明:

w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。

w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失若不存在則建立該檔案。

wb 只寫方式開啟或新建乙個二進位制檔案,只允許寫資料。

wb+ 讀寫方式開啟或建立乙個二進位制檔案,允許讀和寫。

計算機的儲存在物理上是二進位制的,所以文字檔案與二進位制檔案的區別不在於物理儲存上,而是邏輯上的不同。即編碼格式的不同,文字檔案用的是字元編碼,例如ascii編碼(定長),二進位制檔案是基於值編碼,用的是二進位制的方式來存放資料的(變長)。

擴充套件資料

a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。(eof符保留)

a+ 以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。 (原來的eof符不保留

ab+ 讀寫開啟乙個二進位制檔案,允許讀或在檔案末追加資料。

參考資料:csdn軟體開發網-c語言檔案 "w+"與"wb+"區別

10樓:靜·是一種態度

w+用在純文字上,wb+可以用在exe檔案,比如寫個自動複製的病毒就得用wb+。

樓主的程式裡面要寫入的結構體裡有int型別,也是二進位制的範圍。單純char的才用w+.

11樓:洋氣果果

加b表示用二進位制寫入

c語言中,程式設計用到r w rb wb r+等的時候怎麼分辨是用r呢還是用rb,怎麼區分是二

12樓:芯藤之戀

檔案開啟方式

r-read讀

w-write寫

a-在檔案末尾追加資料

b-bite二進位制檔案

t-text文字檔案

r+讀寫

w+寫讀

其他的只要把這些組合在一起就行了

好比rt rb wt wb rb+而如at+可以這樣記 a-在檔案末尾追加資料 +(寫的反面是讀)所以at+表示 開啟乙個文字檔案,允許讀或者在檔案末尾追加資料

13樓:理科女

這個都是對檔案操作的 一些符號,題目中會給你說明他使用是文字檔案還是 什麼的 有很多這個mode所以的 記憶下來 才知道它代表的什麼檔案 ,你可以搜搜 然後自己總結下來背下來就可以了

望採納!!

r,w,a+,r+在c語言中各自表示什麼意思?

14樓:夜の協奏曲

對於檔案使用方式有以下幾點說明:

15樓:匿名使用者

都是資料!

如果非要追究有什麼意思,應該得在你遇到它們的具體程式裡看

關於c語言中檔案修改的操作,關於C語言中檔案修改的操作!

使用檔案操作函式fopen即可建立檔案,使用檔案操作函式fprintf即可修改檔案內容。1 c語言標準庫提供了一系列檔案操作函式。檔案操作函式一般以f 單詞的形式來命名 f是file的簡寫 其宣告位於stdio.h標頭檔案當中。例如 fopen fclose函式用於檔案開啟與關閉 fscanf fg...

c語言函式引數列表中引數加取址符呼叫傳位址反而會報錯

c 語言函bai 數 形參 列表 中 可以是du普通變數 或指標變數,不允zhi許 加取址符。c 語言函dao數 形參專 列表 中 加取址符屬 的引數 叫 引用 c 不支援。函式 呼叫 的實參 型別 要與 形參對應,只有 形參 為 指標變數 的 實參 才可以是 位址。void f int x,int...

c語言帶引數函式的原型宣告,c語言中函式原型宣告部分是什麼意思

void show n char char,int 如果是在c 是合法的,char,int 是友元,表示只有引數型別無引數變數名,但在c 語言中這樣寫不規範,要寫成 void show n char char ch,int a 此處為形參,實際使用中要用實際引數傳入。如 呼叫該函式時,傳入實參 sh...