歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux 標准IO操作函數fopen fclose fread fwrite fgetc fputc fgets fputs

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

日期:2017/2/28 13:46:33   编辑:Linux教程

前面我分享了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個字符,末尾有一個結束標志’\0’

參數:第一個參數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就分享到這裡,如有問題,歡迎指正,謝謝。

Copyright © Linux教程網 All Rights Reserved