如何用c語言fopen函式實現這樣的檔案開啟功能

2022-02-16 01:59:31 字數 5884 閱讀 4689

1樓:匿名使用者

fopen函式用於開啟檔案並獲取檔案的指標,以便對檔案進行操作。

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

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

mode有下列幾種形態字串:

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

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

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

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

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

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

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

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

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

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

上述的形態字串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函式庫以二進位制模式開啟檔案。如果不加b,表示預設加了t,即rt,wt,其中t表示以文字模式開啟檔案。由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

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

int main(void)

fclose(fp);

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

return 0;}

2樓:文正

用system()把路徑寫裡面.如d:\1\2\3\4\5.txt

system("d:\\1\\2\\3\\4\\5.txt");這樣就可以在開啟這個文字檔案了.fopen是把檔案內容載到記憶體中.

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

3樓:星月小木木

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;}

4樓:風若遠去何人留

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

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

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

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

5樓:記住一座城

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

6樓:

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

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

7樓:

8樓:123冰霜雪月

呵呵 [email protected]加下

c語言中的fopen函式的具體實現是怎麼樣?

9樓:匿名使用者

fopen(a,b),意思是開啟一個檔名字為a的檔案

10樓:匿名使用者

lib庫,沒得源**,很可能是彙編的**。

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

11樓:匿名使用者

#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)) > 0)

fwrite (szbuf, 1, iread, fptarget) ;

fclose (fpphoto) ;

fclose (fptext) ;

fclose (fptarget) ;

return 0 ;}

12樓:匿名使用者

fopen看到的檔案都是位元組流。

你可以和開啟任何檔案一樣開啟bmp,但你獨到的是位元組流。

c語言裡面檔案fopen函式有個追加方式開啟檔案,什麼是追加方式呢?

13樓:小肥楊媽媽

開啟檔案時以追加方式即可fopen(filename, "ab ")

內容拓展:

一、c語言

1、c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

2、儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。

3、二十世紀八十年代,為了避免各開發廠商用的c語言語法產生差異,由美國國家標準局為c語言訂定了一套完整的國際標準語法,稱為ansi c,作為c語言最初的標準。

二、fopen函式

1、fopen函式是在當前目錄下開啟一個檔案,其呼叫的一般形式為:檔案指標名=fopen(檔名,使用檔案方式);

2、"檔案指標名"必須是被說明為file 型別的指標變 量;

3、"檔名"是被開啟檔案的檔名;

4、"使用檔案方式"是指檔案的型別和操作要求;

5、"檔名"是字串常量或字元陣列。

14樓:星月小木木

開啟檔案時以追加方式即可fopen(filename, "ab ");

函式申明: file *fopen(char *filename, char *mode)

函式用途: 開啟一個檔案

頭 文 件: stdio.h

輸入引數: filename: 檔名稱

mode:開啟模式,含義具體如下:

"r ":只讀方式開啟一個文字檔案 "rb ": 只讀方式開啟一個二進位制檔案

"w ":只寫方式開啟一個文字檔案 "wb ": 只寫方式開啟一個二進位制檔案

"a ":追加方式開啟一個文字檔案 "ab ": 追加方式開啟一個二進位制檔案

"r+ ":可讀可寫方式開啟一個文字檔案 "rb+ ": 可讀可寫方式開啟一個二進位制檔案

"w+ ":可讀可寫方式建立一個文字檔案 "wb+ ": 可讀可寫方式生成一個二進位制檔案

"a+ ":可讀可寫追加方式開啟一個文字檔案 "ab+ ": 可讀可寫方式追加一個二進位制檔案

返回值: 檔案指標,如返回為null,表示開啟失敗

15樓:西安阿呆

追加就是在原有資料的後面繼續新增資料。

比如檔案原來內容是

16樓:

追加就是在原有資料的後面繼續新增資料。

檔案主名和副檔名可以使用的字元是:

英文字母:a—z(大小寫等價)

數 字:0—9

漢 字特殊符號:$#&@()-^~等。

各種控制字元和下列字元不能用在檔名中:< > / \ | : " * ? //這些字元已做它用

檔名字母大小寫的區分:

dos下檔名不區分大小寫。

在windows系統下,顯示區分大小寫,讀寫操作時不區分。

在類unix/linux系統下,區分字母大小寫。

檔名長度的限制:

dos下檔名長度應為 8.3 即8位檔名3位副檔名。

在windows系統下,可以多個副檔名,以最後一個為準,檔名長度255。

在類unix/linux系統下,檔名長度255,帶路徑的長度1024,也有系統4096。

檔名可以直接寫進去函式裡,也可以放在變數裡:

file *fp;

char namein="abc.txt";

fp=fopen(namein,"r");

或 fp=fopen("abc.txt","r");

檔名若帶路徑,單反斜槓要寫成雙反斜槓,例如:

char namein="c:\\path\\abc.txt";

怎麼用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語言編譯出我愛你字,如何用c語言編譯出我愛你三個字

include int main 不是怎麼編輯,而是你想讓這三個字如何去呈現 include stdio.h main 如何用c程式編寫某某我愛你 include include int main else printf n你是sb n return 0 為什麼放棄 我愛你 怎麼用c語言表示 呵 一...

如何用c語言建立新檔案,如何用C語言建立一個新檔案

函式名 mkdir 功 能 建立一個目錄 資料夾 用 法 int mkdir char pathname 程式例 在win tc和dev c 下執行通過 include include include int main void c語言可以通過fopen函式建立一個新檔案。細節如下 使用fopen需...