學習Linux C程式設計之檔案操作

2021-08-11 05:38:20 字數 2507 閱讀 5947

1)fopen函式

fopen函式類似於系統呼叫中的open函式。和open一樣,它返回檔案的識別符號,只是這裡叫做流(stream),在庫函式裡實現為乙個指向檔案的指標。如果需要對裝置的行為進行明確的控制,最好使用底層系統呼叫,因為這可以避免使用庫函式帶來的一些非預期的***,如輸入/輸出緩衝。

函式原型:

#include

file *fopen(const

char *filename, const

char *mode);

2)fread/fwrite函式

fread函式從檔案流中讀取資料,對應於系統呼叫中的read;fwrite函式從檔案流中寫資料,對應於系統呼叫中的write

函式原型:

#include

size_t fread(void *ptr, size_t size, size_t nitems,file *stream);

引數說明: 

*ptr要讀取資料的緩衝區,也就是要存放讀取資料的地方。 

size:指定每個資料記錄的長度。 

nitems: 計數,給出要傳輸的記錄個數。 

返回值:成功讀取到資料緩衝區的記錄個數,當到達檔案尾時,他的返回值可能會消耗與nitems,甚至可以是0。

3)fclose函式

fclose函式關閉指定的檔案流stream,這個操作會使所有未寫出的資料都寫出。因為stdio庫函式會對資料進行緩衝,所有呼叫fclose函式是很重要的。如果程式需要確保資料已經全部寫出,就應該呼叫fclose函式。雖然程式正常結束時,也會自動的呼叫fclose函式,但這樣就不能檢測出呼叫fclose所產生的錯誤了。

函式原型如下:

#include

int fclose(file *stream);

4)fflush函式

fflush函式的作用是把檔案流中所有未寫出的資料全部寫出。 處於效率考慮,在使用庫函式的時候會使用資料緩衝區,當緩衝區滿的時候才進行寫操作。使用fflush函式可以將緩衝區的資料全部寫出,而不關心緩衝區是否滿。fclose的執行隱含呼叫了fflush函式,所以不必再fclose執行之前呼叫fflush。 

函式原型:

#include

int fflush(file *stream);

8.write 

write,就是把緩衝區的資料寫入檔案中。注意,這裡的檔案時廣泛意義的檔案,比如寫入磁碟、寫入印表機等等。 

linux中write()的函式原型:

size_t write(int fildes, const

void *buf, size_t nbytes);

引數說明: 

fildes:檔案描述符,標識了要寫入的目標檔案。例如:fildes的值為1,就像標準輸出寫資料,也就是在顯示屏上顯示資料;如果為2 ,則想標註錯誤寫資料。 

*buf:待寫入的檔案,是乙個字串指標。 

nbytes:要寫入的字元數。 

函式返回值:size_t 返回成功寫入檔案的字元數。需要指出的是,write可能會報告說他寫入的位元組比你所要求的少。這並不一定是個錯誤。在程式中,你需要檢查error已發現錯誤,然後再次呼叫write寫入剩餘的資料。

9.read

系統呼叫read是從檔案中讀出資料。要讀取的檔案用檔案描述符標識,資料讀入乙個事先定義好的緩衝區。他返回實際讀入的位元組數。 

linux中read的函式原型:

size_t read(int fildes, void *buf, size_t nbytes);
引數說明: 

fildes:檔案描述符,標識要讀取的檔案。如果為0,則從標準輸入讀資料。類似於scanf()的功能。 

*buf:緩衝區,用來儲存讀入的資料。 

nbytes:要讀取的字元數。 

返回值:size_t返回成功讀取的字元數,它可能會小於請求的位元組數。

10.open

系統呼叫open的作用是開啟乙個檔案,並返回這個檔案的描述符。簡單地說,open建立了一條到檔案或裝置的訪問路徑。如果操作成功,它將返回乙個檔案描述符,read和write等系統呼叫使用該檔案描述符對檔案或裝置進行操作。這個檔案描述符是唯一的,他不會和任何其他執行中的程序共享。如果兩個程式同時開啟乙個檔案,會得到兩個不同的問價描述符。如果同時對兩個檔案進行操作,他們各自操作,互補影響,彼此相互覆蓋(後寫入的覆蓋先寫入的)為了防止檔案按讀寫衝突,可以使用檔案鎖的功能。這不是本次重點,以後介紹。 

linux中open的函式原型有兩個:

int open(const

char *path, int oflags);

int open(const

char *path, int oflags, mode_t mode );

引數說明。 

path:準備開啟的檔案或裝置名字。 

oflags:指出要開啟檔案的訪問模式。

linuxc 高階程式設計之檔案操作4

題目要求 1.新建檔案,設定檔案許可權遮蔽字為0 2.建立該檔案的硬鏈結檔案,列印硬鏈結檔案的inode節點號和檔案大小 3.建立該檔案的軟鏈結檔案,列印軟鏈結檔案的inode節點號和檔案大小 列印軟鏈結檔案中的內容 4.列印原始檔的inode節點號,檔案大小和鏈結數目 5.呼叫unlink對原始檔...

學習Linux C程式設計之資料型別

一 變數與常量 1.變數 區域性變數 在函式內定義說明,作用域為函式內,離開函式再呼叫即為非法。注意 1.主函式定義主函式用,不能被其他函式用,主函式也不能用其他函式定義變數。2.形參屬於被調函式區域性變數,實參屬於主調函式區域性變數。3.允許不同函式使用相同變數名。4.復合語句可定義變數,作用域在...

學習C 高階程式設計之檔案操作

對檔案和資料夾進行操作 using system using system.collections.generic using system.io using system.linq using system.text using system.threading.tasks namespace 0...