30 檔案操作 順序檔案的讀操作

2021-07-27 11:48:46 字數 2357 閱讀 6316

順序檔案的讀操作

1、基於字元的讀文字檔案操作

字元的輸出函式是 fgetc(),宣告格式是:

int fgetc( file *fp);

引數 fp 是已經開啟的檔案中指標,函式返回值為整型數值。如果成功讀取了字元,函式返回值是所讀取的字元,如果不能成功讀取,函式返回值是 eof。eof 表示檔案結尾。

例1:讀取字元檔案,將讀取內容顯示到螢幕上

// 讀取字元檔案,將讀取內容顯示到螢幕上

2、基於字串的讀文字檔案操作

基於字串的讀操作,每次將從檔案中讀出乙個指定長度的字串。讀字串的函式是 fgets(),宣告格式是:

char fgets(char *str, int length,file *fp);

引數 str 是乙個具有實際儲存空間的字串指標。有實際儲存空間是指這個指標指向的位址是已經分配給這個指標的一片儲存區域,例如字元陣列的首位址等。

引數length 表示要讀取字串的長度,當讀了n-1個字元或遇到換行符時,讀取操作自動結束。

fp 是檔案指標。

函式 fgets() 的返回值是字元指標型別,如果讀取成功,它將返回乙個指標指向讀出的字串,如果檔案讀取不成功,例如讀檔案時碰到eof的情況或其他異常情況,返回值為null。

例2:讀取字串檔案,將讀取內容顯示到螢幕上

// 讀取字串檔案,將讀取內容顯示到螢幕上

3、格式化讀文字檔案操作

格式化讀文字檔案的函式是 fscanf(),宣告格式是:

int fscanf(file *fp,格式字串,引數1,引數2,…);

fscanf()函式的各個引數的含義與fprintf()函式相同。它的作用是把檔案中的資料按格式字串所指定的資訊讀出。

fscanf()的返回值是整型資料,表示格式轉化的次數,返回值為0,則說明從檔案中讀取了資料但沒有進行轉換;如果寫第一次轉換前即讀到檔案尾,返回值為eof。

例3:格式化讀取檔案,將讀取內容顯示到螢幕上。

// 格式化讀取檔案,將讀取內容顯示到螢幕上

4、讀資料塊

與寫資料塊對應,也可以通過一次性讀資料塊的方法來讀取檔案資料,尤其是在讀取存放的是自定義資料結構型別時,這種方法非常合適。

以這種方式讀檔案,必須要指明讀到記憶體中哪一片區域,儲存空間必須足夠大,也必須要知道這麼多資料當中,每個資料單元所占用的空間位元組數等。讀資料塊的函式是:

unsigned fread(void *buffer,int size,int n,file *fp);

這個函式有 4 個引數,buffer 是用於儲存資料的記憶體起始位址;size 是資料型別的大小;n 是要讀多少個指定型別的資料;fp 是檔案指標。

函式的返回值是實際從檔案讀出的資料的個數,有可能等於 n,也可能不等。如果在讀檔案過程中發生錯誤或者讀取檔案已經達到檔案尾,讀操作就會終止,實際讀取的資料個數也就會小於 n。如果size引數或者n引數設定為0,返回值也是0,即buffer引數指向的緩衝區內容不會改變。

例4:一次讀10個資料,將讀取內容顯示到螢幕上。

// 一次讀10個資料,將讀取內容顯示到螢幕上

5、讀二進位制檔案

讀二進位制檔案與讀文字檔案的方式類似,不同的是只需要將檔案開啟方式改為二進位制檔案開啟方式即可,例如「wb」,「ab」等。

13 檔案操作 2 讀操作

三 檔案讀取偏移量 檔案讀寫的介面位於io包,file檔案類是這些介面的實現類。read 實現的是按位元組數讀取 readbyte make byte 128 指定要讀取的長度 for fmt.println read string readbyte n if n 128 bufio封裝了io.re...

2 檔案 檔案操作

def fileno self,args,kwargs real signature unknown 返回檔案控制代碼在核心中的索引值,以後做io多路復用時可以用到 def flush self,args,kwargs real signature unknown 把檔案從記憶體buffer裡強制重...

2012 6 6檔案操作

path 目錄和檔案操作的命名控制項system.io string changeextension string path,string extension 修改檔案的字尾,修改 支援字串層面的,沒有真的給檔案改名 將兩個路徑合成乙個路徑,比用 好,可以方便解決不加斜線的問題,自動處理路徑分隔符的...