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

2021-08-04 19:17:10 字數 2998 閱讀 6487

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(「檔名開啟方式」)中的檔名可以是變數嗎

檔名可以直接寫進去,也可以放在變數裡 file fp char namein abc.txt fp fopen namein,r 或 fp fopen abc.txt r 檔名若帶路徑,單反斜槓要寫成雙反斜槓,例如 char namein c path abc.txt 長路徑可用8字母格式縮寫 c ...

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

c語言fopen函式用於開啟檔案。函式原型 file fopen const char path,const char mode 引數 path 字串型別,表示檔案所在的路徑,包括檔名 mode 開啟檔案的模式 返回值 檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回null,並...