fopen()函式的使用

2021-09-25 00:17:05 字數 1407 閱讀 2344

定義函式

file * fopen(const char * path,const char * mode);

函式說明

引數path字串包含欲開啟的檔案路徑及檔名,引數mode字串則代表著流形態。

mode有下列幾種形態字串:

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

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

rb+ 讀寫開啟乙個二進位制檔案,只允許讀寫資料。

rt+ 讀寫開啟乙個文字檔案,允許讀和寫。

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

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

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

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

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

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

wt+ 讀寫開啟或著建立乙個文字檔案;允許讀寫。

at+ 讀寫開啟乙個文字檔案,允許讀或在文字末追加資料。

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

上述的形態字串都可以再加乙個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函式庫開啟的檔案為二進位制檔案,而非純文字檔案。不過在posix系統,包含linux都會忽略該字元。由fopen()所建立的新檔案會具有s_irusr|s_iwusr|s_irgrp|s_iwgrp|s_iroth|s_iwoth(0666)許可權,此檔案許可權也會參考umask 值。

有些c編譯系統可能不完全提供所有這些功能,有的c版本不用"r+","w+","a+",而用"rw","wr","ar"等,讀者注意所用系統的規定。

[編輯本段]返回值

檔案順利開啟後,指向該流的檔案指標就會被返回。若果檔案開啟失敗則返回null,並把錯誤**存在errno 中。

一般而言,開檔案後會作一些檔案讀取或寫入的動作,若開檔案失敗,接下來的讀寫動作也無法順利進行,所以在fopen()後請作錯誤判斷及處理。

[編輯本段]例程

#include #include //為了使用exit()

int main()

//getc()用於在開啟檔案中獲取乙個字元

while((ch=getc(fp))!=eof)

putchar(ch);

fclose(fp); //關閉檔案

return 0;

} 注意!初學者往往會犯乙個錯誤,即在輸入檔名時不加字尾名,請注意加上!

fopen 及相關函式使用

函式簡介 函式功能 開啟乙個檔案 函式原型 file fopen const char path,const char mode 相關函式 open,fclose,fopen s 1 wfopen 所需庫 返回值 檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回null,並把錯誤...

關於fopen函式

在c語言中,操作檔案之前必須先開啟檔案 標頭檔案中的 fopen 函式即可開啟檔案,它的用法為 file fopen char filename,char mode file 是 標頭檔案中的乙個結構體,它專門用來儲存檔案資訊。filename為檔名 或者檔案路徑 mode為開啟方式,它們都是字串。...

在iOS系統中使用fopen函式

這些天在應用中用到openssl編譯碼的時候遇到用fopen開啟檔案拿不到file的情況,造成crash,最後得到解決,以下是記錄 因為應用底層有部分 是c編寫的,在這裡要開啟乙個檔案來讀取資料,一開始在objective c中建立檔案的時候是用的nsurl,傳到c 中的時候使用 url absol...