linux C庫函式 二

2021-08-26 14:12:20 字數 3985 閱讀 5915

linux c庫函式(二)

2023年01月26日

[b]linux-fopen-fclose-fread-fwrite等函式[/b][b] [/b]

clearerr(清除檔案流的錯誤旗標)

相關函式

feof

表頭檔案

#include

定義函式

void clearerr(file * stream);

函式說明

clearerr()清除引數stream指定的檔案流所使用的錯誤旗標。

返回值

fclose(關閉檔案)

相關函式

close,fflush,fopen,setbuf

表頭檔案

#include

定義函式

int fclose(file * stream);

函式說明

fclose()用來關閉先前fopen()開啟的檔案。此動作會讓緩衝區內的資料寫入檔案中,並釋放系統所提供的檔案資源。

返回值

若關檔案動作成功則返回0,有錯誤發生時則返回eof並把錯誤**存到errno。

錯誤**

ebadf表示引數stream非已開啟的檔案。

範例 請參考fopen()。

fdopen(將檔案描述詞轉為檔案指標)

相關函式

fopen,open,fclose

表頭檔案

#include

定義函式

file * fdopen(int fildes,const char * mode);

函式說明

fdopen()會將引數fildes 的檔案描述詞,轉換為對應的檔案指標後返回。引數mode 字串則代表著檔案指標的流形態,此形態必須和原先檔案描述詞讀寫模式相同。關於mode 字串格式請參考fopen()。

返回值

轉換成功時返回指向該流的檔案指標。失敗則返回null,並把錯誤**存在errno中。

範例 #include

main()

執行 hello!

feof(檢查檔案流是否讀到了檔案尾)

相關函式

fopen,fgetc,fgets,fread

表頭檔案

#include

定義函式

int feof(file * stream);

函式說明

feof()用來偵測是否讀取到了檔案尾,尾數stream為fopen()所返回之檔案指標。如果已到檔案尾則返回非零值,其他情況返回0。

返回值

返回非零值代表已到達檔案尾。

fflush(更新緩衝區)

相關函式

write,fopen,fclose,setbuf

表頭檔案

#include

定義函式

int fflush(file* stream);

函式說明

fflush()會強迫將緩衝區內的資料寫回引數stream指定的檔案中。如果引數stream為null,fflush()會將所有開啟的檔案資料更新。

返回值

成功返回0,失敗返回eof,錯誤**存於errno中。

錯誤**

ebadf 引數stream 指定的檔案未被開啟,或開啟狀態為唯讀。其它錯誤**參考write()。

fgetc(由檔案中讀取乙個字元)

相關函式

open,fread,fscanf,getc

表頭檔案

include

定義函式

nt fgetc(file * stream);

函式說明

fgetc()從引數stream所指的檔案中讀取乙個字元。若讀到檔案尾而無資料時便返回eof。

返回值

getc()會返回讀取到的字元,若返回eof則表示到了檔案尾。

範例 #include

main()

fgets(由檔案中讀取一字串)

相關函式

open,fread,fscanf,getc

表頭檔案

include

定義函式

har * fgets(char * s,int size,file * stream);

函式說明

fgets()用來從引數stream所指的檔案內讀入字元並存到引數s所指的記憶體空間,直到出現換行字元、讀到檔案尾或是已讀了size-1個字元為止,最後會加上null作為字串結束。

返回值

gets()若成功則返回s指標,返回null則表示有錯誤發生。

範例 #include

main()

執行 this is a test /*輸入*/

this is a test /*輸出*/

fileno(返回檔案流所使用的檔案描述詞)

相關函式

open,fopen

表頭檔案

#include

定義函式

int fileno(file * stream);

函式說明

fileno()用來取得引數stream指定的檔案流所使用的檔案描述詞。

返回值

返回檔案描述詞。

範例 #include

main()

執行 fd=3

fopen(開啟檔案)

相關函式

open,fclose

表頭檔案

#include

定義函式

file * fopen(const char * path,const char * mode);

函式說明

引數path字串包含欲開啟的檔案路徑及檔名,引數mode字串則代表著流形態。

mode有下列幾種形態字串:

r 開啟唯讀檔案,該檔案必須存在。

r+ 開啟可讀寫的檔案,該檔案必須存在。

w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。

w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。

a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。

a+ 以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。

上述的形態字串都可以再加乙個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函式庫開啟的檔案為二進位制檔案,而非純文字檔案。不過在posix系統,包含linux都會忽略該字元。由fopen()所建立的新檔案會具有s_irusr|s_iwusr|s_irgrp|s_iwgrp|s_iroth|s_iwoth(0666)許可權,此檔案許可權也會參考umask值。

返回值

檔案順利開啟後,指向該流的檔案指標就會被返回。若果檔案開啟失敗則返回null,並把錯誤**存在errno 中。

附加說明

一般而言,開檔案後會作一些檔案讀取或寫入的動作,若開檔案失敗,接下來的讀寫動作也無法順利進行,所以在fopen()後請作錯誤判斷及處理。

範例 #include

main()

fputc(將一指定字元寫入檔案流中)

相關函式

fopen,fwrite,fscanf,putc

表頭檔案

#include

定義函式

int fputc(int c,file * stream);

函式說明

fputc 會將引數c 轉為unsigned char 後寫入引數stream 指定的檔案中。

返回值

fputc()會返回寫入成功的字元,即引數c。若返回eof則代表寫入失敗。

範例 #include

main()

s[nmemb];

main()

linux C庫函式 二

linux c庫函式 二 2010年01月26日 b linux fopen fclose fread fwrite等函式 b b b clearerr 清除檔案流的錯誤旗標 相關函式 feof 表頭檔案 include 定義函式 void clearerr file stream 函式說明 cle...

linux C庫函式 二

linux c庫函式 二 2010年01月26日 b linux fopen fclose fread fwrite等函式 b b b clearerr 清除檔案流的錯誤旗標 相關函式 feof 表頭檔案 include 定義函式 void clearerr file stream 函式說明 cle...

linux C庫函式 二

linux c庫函式 二 2010年01月26日 b linux fopen fclose fread fwrite等函式 b b b clearerr 清除檔案流的錯誤旗標 相關函式 feof 表頭檔案 include 定義函式 void clearerr file stream 函式說明 cle...