FILE文件流的中fopen、fread、fseek、fclose的運用。本站提示廣大學習愛好者:(FILE文件流的中fopen、fread、fseek、fclose的運用)文章只能為提供參考,不一定能成為您想要的結果。以下是FILE文件流的中fopen、fread、fseek、fclose的運用正文
FILE文件流用於對文件的疾速操作,次要的操作函數有fopen、fseek、fread、fclose,在對文件構造比擬清楚時運用這幾個函數會比擬快捷的失掉文件中詳細地位的數據,提取對我們有用的信息,滿足編程中的需求。以下辨別停止闡明,還有他們運用時的留意事項
fopen
函數原型 FILE * fopen(const char *path,cost char *mode)
作用:翻開一個文件,前往指向該文件的指針
參數闡明:第一個參數為欲翻開文件的文件途徑及文件名,第二個參數表示對文件的翻開方式
注:mode有以下值:
r:只讀方式翻開,文件必需存在
r+:可讀寫,必需存在
rb+:翻開二進制文件,可以讀寫
rt+:翻開文本文件,可讀寫
w:只寫,文件存在則文件長度清0,文件不存在則樹立該文件
w+:可讀寫,文件存在則文件長度清0,文件不存在則樹立該文件
a:附加方式翻開只寫,不存在樹立該文件,存在寫入的數據加到文件尾,EOF符保存
a+:附加方式翻開可讀寫,不存在樹立該文件,存在寫入的數據加到文件尾,EOF符不保存
wb:翻開二進制文件,只寫
wb+:翻開或樹立二進制文件,可讀寫
wt+:翻開或樹立文本文件,可讀寫
at+:翻開文本文件,可讀寫,寫的數據加在文本末尾
ab+:翻開二進制文件,可讀寫,寫的數據加在文件末尾
由mode字符可知,上述如r、w、a在其後都可以加一個b,表示以二進制方式翻開文件
前往值:文件翻開了,前往一個指向該翻開文件的指針(FILE構造);文件翻開失敗,錯誤上存error code(錯誤代碼)
留意:在fopen操作後要停止判別,能否文件翻開,文件真正翻開了才干停止前面的讀或寫操作,如有錯誤要停止錯誤處置
例:FILE *pfile=fopen(const char *filename,"rb");
翻開文件流還有一個支持寬字符的函數,如下
FILE *_wfopen(const wchar_t *filename,const wchar_t *mode)
fread
函數原型:size_t fread(void* buff,size_t size,size_t count,FILE* stream)
作用:從文件中讀入數據到指定的地址中
參數:第一個參數為接納數據的指針(buff),也即數據存儲的地址
第二個參數為單個元素的大小,即由指針寫上天址的數據大小,留意單位是字節
第三個參數為元素個數,即要讀取的數據大小為size的元素個素
第四個參數為提供數據的文件指針,該指針指向文件外部數據
前往值:讀取的總數據元素個數
例:
int num,count;
int* pr=new int[num*count];
fread(pr, num*4, count, stream); // stream為fopen中前往的FILE指針
要將數據寫入pr中,必需為pr分配內存,一個int為4個字節,所以要x4
fseek
函數原型:int fseek(FILE *stream,long offset,int framewhere)
作用:重定位文件外部的指針
參數:第一個為文件指針,第二個是指針的偏移量,第三個是指針偏移起始地位
前往值:重定位成功前往0,否則前往非零值
需求留意的是該函數不是重定位文件指針,而是重定位文件外部的指針,讓指向文件外部數據的指針移到文件中我們感興味的數據上,重定位次要是這個目的。
闡明:執行成功,則stream指向以fromwhere為基准,偏移offset個字節的地位。執行失敗(比如說offset偏移的地位超出了文件大小),則保存原來stream的地位不變
fclose
函數原型:int fclose(FILE *stream)
功用:封閉一個文件流,運用fclose就可以把緩沖區內最後剩余的數據輸入到磁盤文件中,並釋放文件指針和有關的緩沖區
純熟運用以上四個函數可以從文件中獲取對我們有用的數據型,前提關於文件格式很理解,比方,關於一個DIB位圖文件,就可以讀取出他的文件中的頭信息和像素點信息。