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,並...