C語言中fopen函式開啟檔案後,檔案以何種方式讀入記憶體

時間 2021-08-11 17:10:44

1樓:星月小木木

c語言fopen函式用於開啟檔案。

函式原型:file * fopen(const char * path,const char * mode);

引數:path 字串型別,表示檔案所在的路徑,包括檔名

mode 開啟檔案的模式、

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

mode:

r 以只讀方式開啟檔案,該檔案必須存在。

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

rb+ 讀寫開啟一個二進位制檔案,允許讀寫資料,檔案必須存在。

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

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

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

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

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

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

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

例項:#include

#define f_path "d:\\myfile\\file.dat"

int main(void)

fclose(fp);

fp=null;//需要指向空,否則會指向原開啟檔案地址

return 0;}

2樓:風若遠去何人留

開啟檔案後, 讀檔案有一個緩衝區, 真正讀檔案是按塊讀的。

一塊多大和你係統有關。比如讀4k到記憶體。

然後 程式的讀函式, 是從緩衝區去讀的。 要讀的資料, 在緩衝區裡面就直接讀到程式。

不在, 那麼清掉緩衝, 重新讀一次檔案對應位置。

3樓:記住一座城

那要看你指定什麼方式送入,字元,字串還是一組資料,記憶體存取速度很快,windows 啟動,把指令和資料讀入記憶體都這麼快,更何況其他程式。

4樓:

現在大多數的系統採用分頁機制,在開啟檔案成功後,檔案並沒有載入進入記憶體,而是核心生成了一個檔案描述符,檔案描述符含有一個指向檔案indoe結構的指標,在這個結構中存有檔案真正的節點資訊和位置。當讀取的時候,cpu首先判定需要讀取的位置是否在記憶體上,如果再則直接讀取(沒有所謂的按行讀取一說,按行讀取不過是找檔案中的換行標而已,當讀到換行符的時候返回結果),如果不在記憶體上,則通過記憶體管理器進行載入,實際上,無論你是讀取一個字元還是一行,載入的大小是固定的,比如系統機制是載入1m,當你檔案大於1m時也只載入1m,當不夠時全部載入。對不不同系統方式不同。

(當然系統如果對讀檔案有特殊的優化也不同),當你讀取之後,檔案是繼續留在記憶體還是釋放,這裡有另一套極其複雜的機制在管理。因為在你讀第一行和第二行的時間裡,還有許多事情在併發的執行。

5樓:

6樓:123冰霜雪月

呵呵 [email protected]加下

c語言fopen函式中檔案開啟方式(引數值)

7樓:匿名使用者

c語言fopen函式用於開啟檔案。

函式原型:file * fopen(const char * path,const char * mode);

引數:path 字串型別,表示檔案所在的路徑,包括檔名

mode 開啟檔案的模式、

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

mode:

r 以只讀方式開啟檔案,該檔案必須存在。

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

rb+ 讀寫開啟一個二進位制檔案,允許讀寫資料,檔案必須存在。

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

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

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

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

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

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

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

例項:#include

#define f_path "d:\\myfile\\file.dat"

int main(void)

fclose(fp);

fp=null;//需要指向空,否則會指向原開啟檔案地址

return 0;}

8樓:匿名使用者

你試一下,加一句:

#include

看一下,會不會消那個錯.

9樓:ghos丶

不知道你問的是什麼意思,不過r 只讀開啟

w 只寫開啟

a 追加開啟

還有相應的帶+操作,差不多。

fopen接受2個引數(指向檔案的指標,開啟方式即訪問許可型別)fp=fopen("text.txt", a+);

就可以了,不過如果你不指定具體位置txt要存在當前資料夾裡或者環境變數能找到的地方。

_putch就可以輸出

怎麼用c語言中的fopen函式開啟bmp格式的影象檔案

include include int main while iread fread szbuf,1,sizeof szbuf fpphoto 0 fwrite szbuf,1,iread,fptarget while iread fread szbuf,1,sizeof szbuf fptext ...

c語言fopen函式打不開檔案

1 新建一個fopen函式的使用專案。2 包含需要用到的標頭檔案。3 輸入 tmain函式。4 在msdn上,檢視fopen的函式原型。5 輸入fopen函式。6 定義一個file型別的指標變數f,並接受返回值。7 使用if語句判斷檔案是否開啟成功。8 按快捷鍵f5,執行程式,檢視結果。檔案不存在 ...

關於c語言中如何開啟檔案,c語言如何開啟檔案

zifu.txt檔案只能由ascii字元組成,否則會出現亂碼 include int main else printf s n str fprintf p,s str fclose p return 0 null而不是 0 c語言如何開啟檔案 建議你加上硬碟驅動器符和檔案路徑。假如欲開啟的檔案在c ...