2014-01-14 38 views
27

fopen("myfile", "r+")"r+""w+"打開模式有什麼區別?我讀到:fopen中r +和w +的區別()

"r"打開一個文本文件供閱讀。
"w"打開要寫入的文本文件, 將現有文件截斷爲零長度,或者在文件不存在時創建該文件。

"r+"打開一個文本文件進行更新(即對於閱讀和 書面)。
"w+"打開文本文件進行更新(讀取和寫入), 首先截取 該文件如果存在則爲零長度或者如果文件不存在則創建該文件。

我的意思是不同的是,如果我用"w+"打開文件,該文件將首先被擦除?

+0

這兩個區別是正確的:截斷和創建。 –

+1

......它會先被刪除,如果不存在則會被創建(而'r +'會在這種情況下產生錯誤 – ShinTakezou

回答

19

嘗試這些代碼,你會明白:

#include <stdio.h> 
int main() 
{ 
    FILE *fp; 

    fp = fopen("test.txt", "w+"); 
    fprintf(fp, "This is testing for fprintf...\n"); 
    fputs("This is testing for fputs...\n", fp); 
    fclose(fp); 
} 

,然後這個

#include <stdio.h> 
int main() 
{ 
    FILE *fp; 

    fp = fopen("test.txt", "w+"); 
    fclose(fp); 
} 

然後打開文件test.txt,看看會發生什麼。您將看到第一個程序寫入的所有數據都已被刪除。
r+重複此操作並查看結果。希望你會明白。

+1

非常好,順便說一句,你也可以使用'cat'命令來顯示 –

+4

這是Linux命令打印文件;) –

1

有2個差異,不像r+w+會:

  • 創建的文件,如果它不存在
  • 首先截斷,即會刪除其內容
11
r = read mode only 
r+ = read/write mode 
w = write mode only 
w+ = read/write mode, if the file already exists override it (empty it) 

所以是的,如果文件已經存在w +將刪除文件並給你一個空文件。

40

r+w+都可以讀取和寫入文件。但是,r+不會刪除文件的內容,並且不會創建新文件(如果此文件不存在),而w+會刪除文件的內容,並在文件不存在時創建它。

0

r +現有文件在開始時打開,以便讀取和寫入。 w +和w一樣,除了閱讀和寫作。

相關問題