fread與fwrite都是以二進位制形式讀取和寫入檔案中的資料
1. 函式原型
int fread(void *buffer,unsigned sife,unsigned count,file *fp)
2. 功能說明
從由fp指定的檔案中,按二進位制形式將sife*count個資料讀到由buffer指出的資料區中。
3. 引數說明
buffer:這是乙個void型指標,指出要將讀入資料存放在其中的儲存區首位址。
sife:指出乙個資料塊的位元組數,即乙個資料塊的大小尺寸。
count:指出一次讀入多少個資料塊(sife)。
fp:這是個檔案指標,指出要從其中讀出資料的檔案。
4.返回值
正常返回:實際讀取資料塊的個數,即count。
異常返回:如果檔案中剩下的資料塊個數少於引數中count指出的個數,或者發生了錯誤,返回0值。此時可以用feof()和ferror()來判定到底出現了什麼
情況。h. 以二進位制形式寫資料到檔案中去
1. 函式原型
int fwrite(void *buffer,unsigned sife,unsigned count,file *fp)
2. 功能說明
按二進位制形式,將由buffer指定的資料緩衝區內的sife*count個資料寫入由fp指定的檔案中去。
3. 引數說明
buffer:這是乙個void型指標,指出要將其中資料輸出到檔案的緩衝區首位址。
sife:指出乙個資料塊的位元組數,即乙個資料塊的大小尺寸。
count:一次輸出多少個資料塊(sife)。
fp:這是個檔案指標,指出要從其中讀出資料的檔案。
4.返回值
正常返回:實際輸出資料塊的個數,即count。
異常返回:返回0值,表示輸出結束或發生了錯誤。
例子:#include #include using namespace std;
struct worker
;void main()
if((out=fopen("e:\\vs_projects\\file_test\\2.txt","wb"))==null)
printf("size of int is %d\nsize of char is %d\n",sizeof(int),sizeof(char));
while(fread(&wk,sizeof(struct worker),1,in)==1)
{ fwrite(&wk,sizeof(struct worker),1,out);
cout<
其中,1.txt輸入內容為: 01 zzzzzzzzzzzzzzzzzzzk 65
中間用空格表示。debug下,size of int is 4,size of char is 1。說明在此系統下,int佔4個位元組,char佔乙個位元組。
1.txt在debug下的值為
wk.number:0x20313020,wk.name:zzzzzzzzzzzzzzzzzzzk,wk.age:20353620,number和age顯示的是16進製制的ascll碼,對應char型的_10_和_56_(_表示空格),輸入的1.txt中的內容_01_與_65_實際上都是以字元char儲存,故debug下會顯示其對應的ascll碼值,而且是低位在前,高位在後。而在stdout的cmd視窗中顯示的是540094496和540358176,恰好是_01_與_65_所組成的ascll碼的十進位制顯示。
最後,2.txt當中顯示的內容即為1.txt的內容: 01 zzzzzzzzzzzzzzzzzzzk 65
因此,要注意顯示格式的問題和位數擺放先後順序的問題。
檔案操作之fread函式和fwrite函式
資料塊寫函式 fwritesize t fwrite const void restrict ptr,size t size,size t nitems,file restrict stream 資料塊寫函式 freadsize t fread void restrict ptr,size t si...
C語言檔案操作之 檔案的讀寫
c語言檔案操作之 檔案的讀寫 當檔案按指定的工作方式開啟以後,就可以執行對檔案的讀和寫。下面按檔案的性質分類進行操作。針對文字檔案和二進位制檔案的不同性質,對文字檔案來說,可按字元讀寫或按字串讀寫 對二進位制檔案來說,可進行成塊的讀寫或格式化的讀寫。1.讀寫字元 c提供fgetc和fputc函式對文...
c語言簡單入門之檔案操作
檔案的開啟與關閉 檔案的操作要求引入標頭檔案stdio.h 1,檔案型指標變數 file fp fp指的是乙個指向file型別結構體的指標變數。我們使fp指向某乙個檔案的結構體變數,從而通過該結構體變數中的檔案資訊能夠訪問該檔案。2,file型別的陣列 file f 5 定義了乙個結構體陣列f,它有...