Linux 系統程式設計學習 檔案I O操作

2021-06-20 14:11:00 字數 1643 閱讀 8372

一、非緩衝檔案操作

執行非緩衝檔案操作後,應用程式將立即獲取或傳送資料,非緩衝檔案操作的函式只有:read(),write()。

從檔案中將資訊講到到指定的記憶體區域中read(檔案識別符號,記憶體塊指標,記憶體塊長度);

返回值是實際讀取的長度,沒有讀取到資料返回0,錯誤返回1

檔案識別符號可使用open()函式獲得,或者使用系統預先分配的檔案識別符號。

將指定長度的資料寫入檔案中write(檔案識別符號,內

存塊指標,記憶體塊長度) 返回值同read()函式

注:read(0,記憶體塊指標,記憶體塊長度)中檔案識別符號0是系統預定義的檔案識別符號,代表標準輸入,實現的操作與gets()或scanf()函式相當。

指定指標的具體位置lseek(檔案識別符號,偏移長度,起始位置) 返回值是指標位置,失敗返回-1

二、緩衝檔案操作

開啟檔案流fopen(路徑,開啟方式),返回值是檔案流指標,失敗返回null

關閉檔案流fclose(檔案流指標),當fclose()函式執行時,所有放在緩衝區等待寫入的資料都將被寫入到檔案中,如果資料沒能成功儲存,返回-1,否則返回0

需要用到檔案流結構指標 file *

讀取檔案流fread(緩衝區指標,長度,數量,檔案流指標)

寫入檔案流fwrite()

fflush(緩衝區指標) 此函式是待寫入的資料儲存在緩衝區中,而又要立即將緩衝區的資料寫入檔案

檔案流的格式化輸入與輸出

fscanf(檔案流指標,「控制字串」,輸入項列表);返回值是正確輸入項的個數

fprintf(檔案流指標,「控制字串」,輸出項列表);返回值是實際輸出資料的長度

注:fscanf()並不是最靈活的實現方法,因為需要預先估計檔案的形式並定義控制字串,它會將所遇到數值為0的地方當作字串結束符處理。

檔案流的定位操作

fgetpos(檔案流指標,fpos_t *位置),獲得檔案當前讀寫位置,操作成功返回0,否則返回-1

fsetpos(檔案流指標,const fpos_t *位置)設定檔案讀寫位置,返回值同上

ftell(檔案流指標)獲得檔案當前讀寫位置偏移量,返回值為長整型

rewind(檔案流指標)將檔案指標重新指向乙個流的開頭

注:fpos_t型別是標準函式庫中定義的一種結構體,是檔案流file結構體中的乙個成員。

檔案流操作的其他函式

fgetc(檔案流指標)從檔案讀取乙個字元,並將該字元以整型資料返回給呼叫者;

fputc(字元型資料,檔案流指標) 向檔案輸出乙個字元,返回操作結果

fgets(字串指標,最大長度,檔案流指標)從檔案讀取乙個字串儲存到字串指標指向 的位置,操作成功返回字串指標

fputs(字串指標,檔案流指標)向檔案輸了乙個字串,操作成功時返回字串的長度

freopen(路徑,開啟方式,檔案流指標)重新開啟乙個檔案

setvbuf(檔案流指標,緩衝區指標,型別,緩衝區大小)設定檔案流的緩衝區

remove(路徑)刪除檔案或目錄

檔案操作流的錯誤處理

ferror(檔案流指標)判斷檔案流操作是否失敗,失敗返回非0,否則返回0

feof(檔案流指標)當檔案流內指向檔案中位置的指標到達檔案尾,返回非0,否則返回0

clearee(檔案流指標)

清除errno變數內錯誤資訊

Linux學習 檔案I O程式設計

在linux中,為了保護核心空間,將程式的執行空間分為核心空間和使用者空間,核心態和使用者態 他們執行在不同的級別上,在邏輯上是相互隔離的,因此使用者程序在通常情況下不允許訪問核心資料,也無法使用核心函式,他們只能在使用者空間操作使用者資料,呼叫使用者空間的函式,作業系統為使用者提供了兩個介面 1....

Linux系統程式設計 檔案IO 一

最近在在實驗樓上學linux,做點筆記。上面的課程對於學習linux還不錯,有興趣可以看看。檔案io linux提供給了使用者程式一些介面,用來呼叫執行相關的功能。大多數linux檔案i o只需要用到5個函式 open,read,write,lseek和close 檔案描述符 檔案描述符是乙個非負整...

linux系統程式設計之檔案I O

一 檔案描述符 linux系統中,所有開啟的檔案都對應乙個數字,這個數字由系統來分配,稱為檔案描述符。pcb程序控制塊裡有檔案描述符表,以陣列形式存放於核心區。乙個程序預設開啟3個檔案描述符 stdin fileno 0 stdout fileno 1 stderr fileno 2 新開啟檔案返回...