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...