C C 檔案管理fopen fread

2021-07-11 03:03:03 字數 2144 閱讀 7291

1.fread

原型:

_acrtimp size_t __cdecl fread(

_out_writes_bytes_(_elementsize * _elementcount) void* _buffer,

_in_ size_t _elementsize,

_in_ size_t _elementcount,

_inout_ file* _stream

);

fread()函式需要輸入四組資料:

elementsize:要讀的每個資料項的位元組數,可由sizeof計算

elementcount:讀取的資料項個數,每個資料項大小為elementsize個位元組

stream:檔案流

//位**件讀取

file *fileopen = fopen(filename, "rb"); //唯讀二進位制開啟檔案

if (fileopen == null)

else

//讀取檔案資料

fread(&bmpfileheader, sizeof(bitmapfileheader), 1, fileopen);

fread(&bmpinfoheader, sizeof(bitmapinfoheader), 1, fileopen);

2.fopen

原型:

_acrtimp file* __cdecl fopen(

_in_z_ char const* _filename,

_in_z_ char const* _mode

);

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

一般而言在fopen()後

時註明檔名稱及字尾。

fopen()開啟檔案的方式,首先明確:

r:read

w:write

+:讀和寫

常用的mode有一下幾種形態:(百科)

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

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

rb+ 讀寫開啟乙個

二進位制檔案,允許讀寫資料,檔案必須存在。

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

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

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

eof符保留)

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

wb 只寫開啟或新建乙個

二進位制檔案;只允許寫資料。

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

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

wx 建立文字檔案,只允許寫入資料.[c11]

wbx 建立乙個二進位制檔案,只允許寫入資料.[c11]

w+x 建立乙個文字檔案,允許讀寫.[c11]

wb+x 建立乙個二進位制檔案,允許讀寫.[c11]

w+bx 和"wb+x"相同[c11]

以x結尾的模式為獨佔模式,檔案已存在或者無法建立(一般是路徑不正確)都會導致fopen失敗.檔案以作業系統支援的獨佔模式開啟.[c11]

二進位制和文字模式的區別

1.在windows系統中,文字模式下,檔案以"\r\n"代表換行。若以文字模式開啟檔案,並用fputs等函式寫入換行符"\n"時,函式會自動在"\n"前面加上"\r"。即實際寫入檔案的是"\r\n" 。

2.在類unix/linux系統中文字模式下,檔案以"\n"代表換行。所以linux系統中在文字模式和二進位制模式下並無區別。

C C 基礎知識 標頭檔案管理

有乙個簡單的規則是 在同乙個檔案中,只能將乙個標頭檔案包含一次。但是,在某些情況下,可能會出現將某個標頭檔案包含兩次的情況,比如可能使用了包含了另乙個標頭檔案的標頭檔案。預處理器編譯指令可以防止這種情況的出現 ifndef xx.h ifndef xx h define xx h place inc...

c c 記憶體管理

我一直覺得記憶體是很複雜的東西.也許我把這篇文章完成的時候,我會了解一點c 的記憶體管理機制 從硬體開始 記憶體器位址空間 匯流排位址空間 cpu位址空間 虛擬記憶體位址空間 程式位址空間 邏輯位址空間 程式位址空間對c 程式設計師來說是可見的,其他位址空間我們並不關心 通過列印pointer的值 ...

C C 記憶體管理

寫乙個好的c 程式,我們要懂得好多東西,比如說最基本的物件導向程式設計思想,c 的封裝 繼承 多型機制,設計模式等,還有乙個很重要的內容便是效能優化,像c c 這種接近底層的語言,追求的就是效能,與之相關的一項內容便是記憶體管理,記憶體分配要合理,禁止破壞記憶體,不能有記憶體洩漏,操作不好的話,程式...