首頁 > 軟體

Linux 標準IO操作函數fopen fclose fread fwrite fgetc fputc fgets fputs

2020-06-16 17:27:08

前面我分享了Linux檔案系統呼叫的一些函數,是不帶快取的,一般是底層呼叫,今天來分享下上層的標準IO操作函數,也就是跨平台的,一般以f開頭
1 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(錯誤程式碼)

2 fclose
函數原型:int fclose(FILE *stream)

功能:關閉一個檔案流,使用fclose就可以把緩衝區內最後剩餘的資料輸出到磁碟檔案中,並釋放檔案指標和有關的緩衝區

3 fread
函數原型:size_t fread(void* buff,size_t size,size_t count,FILE* stream)

作用:從檔案中讀入資料到指定的地址中

引數:第一個引數為接收資料的指標(buff),也即資料儲存的地址

第二個引數為單個元素的大小,即由指標寫入地址的資料大小,注意單位是位元組

第三個引數為元素個數,即要讀取的資料大小為size的元素個素

第四個引數為提供資料的檔案指標,該指標指向檔案內部資料

返回值:讀取的總資料元素個數

4 fwrite
函數原型:size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream )

作用:寫入資料到指定的檔案流中

引數:第一個引數為接收資料的指標(buff),也即資料儲存的地址

第二個引數為單個元素的大小,即由指標寫入地址的資料大小,注意單位是位元組

第三個引數為元素個數,即要讀取的資料大小為size的元素個素

第四個引數為提供資料的檔案指標,該指標指向檔案內部資料

返回值:寫入的總資料元素個數

例子,把file.in的檔案讀出來,寫入到file.out

5 fgetc
函數原型:int fgetc(FILE *stream)

作用:從一個流中讀取一個字元

引數:一個FILE型的指標

返回值:getc 以 unsigned char 的方式讀取檔案流,擴張為一個整數,並返回。 意思就是, getc 從檔案流中取一個位元組(8位元),並加上24個零,變成32位元整型,成為一個小於256的整數, 然後返回

6 fputc
函數原型:int fputc(int ch, FILE *stream)

作用:往一個流中輸入一個字元

引數:第一個引數ch雖然是整型,但fputc 將其寫入檔案流之前,,把整數的高24位元去掉了

第二個引數是一個FILE型的指標

返回值:如果成功輸入,fputc 返回 0,否則返回EOF(-1)

例子,把filegetc.in的檔案讀出來,寫入到fileputc.out

7 fgets
函數原型:char *fgets(char *s, int n, FILE *stream)

作用:從流中讀取n-1個字元,末尾有一個結束標誌’’

引數:第一個引數s是來接收字串

第二個引數是字元個數

第三個引數是一個FILE型的指標

返回值:如果成功則返回s的指標,否則返回NULL

注意:這種讀的方式,每次遇到換行就會結束,所以讀的時候需要用while迴圈

8 fputs
函數原型:int fputs(const char * s, FILE *stream);

作用:從流中寫入字串

引數:第一個引數s是輸入字串

第二個引數是一個FILE型的指標

返回值:如果成功則回一個非負的值,否則,錯誤返回EOF

例子:把filegets.in的檔案讀出來,寫入到fileputs.out

當然這個n可以調大一點,使其每次盡量讀一整行

好了,Linux標準IO操作函數fopen fclose fread fwrite fgetc fputc fgets fputs就分享到這裡,如有問題,歡迎指正,謝謝。

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-11/137613.htm


IT145.com E-mail:sddin#qq.com