[[轉(zhuǎn)帖]]C語(yǔ)言常用文件處理函數(shù)
在實(shí)際的編程中,經(jīng)常需要進(jìn)行文件讀寫(xiě)的操作。下面是筆者在學(xué)習(xí)中記錄的一些常有文件處理函數(shù)。一、文件的打開(kāi)與關(guān)閉
1、fopen
調(diào)用方式:
FILE *fp;
fp=fopen(文件名,使用文件方式);
說(shuō)明:
(1)、使用文件方式主要有:只讀(r)、只寫(xiě)(w)、追加(a),還有配合"+"使用的方式,如r+、w+、a+;
(2)、默認(rèn)打開(kāi)的文件為文本文件,用't'表示,可以省略。如果打開(kāi)二進(jìn)制的文件,則使用'b'。例如:r、rt、rb等。
(3)、如果不能實(shí)現(xiàn)打開(kāi)的任務(wù),則函數(shù)返回NULL值。
2、fclose
調(diào)用方式:
FILE *fp;
fclose(fp);
說(shuō)明:
(1)、打開(kāi)文件后,必須要養(yǎng)成關(guān)閉文件的好習(xí)慣。
(2)、如果關(guān)閉文件出錯(cuò),函數(shù)返回非零值,否則返回0.可以用ferror函數(shù)檢查是否出錯(cuò)。
二、文件的讀寫(xiě)
1、fputc
調(diào)用方式:
FILE *fp;
char c;
fputc(c,fp);
說(shuō)明:
(1)、fputc向文件寫(xiě)入一個(gè)字符。
(2)、輸出成功則返回值就是輸出的字符,如果失敗則返回一個(gè)EOF。
2、fgetc
調(diào)用方式:
FILE *fp;
char c;
c=fgetc(fp);
說(shuō)明:
(1)、fgetc向文件讀取一個(gè)字符。
(2)、函數(shù)返回讀取的字符,如果遇到文件結(jié)尾,則返回EOF。
(3)、建議使用feof函數(shù)來(lái)判斷是否文件結(jié)束。如果文件結(jié)束,函數(shù)feof返回值為1,否則為0。
3、fread
調(diào)用方式:
fread(buffer,size,count,fp);
說(shuō)明:
(1)、buffer:是一個(gè)指針。對(duì)于fread來(lái)說(shuō)明,它是讀入數(shù)據(jù)的存放地址。對(duì)fwrite來(lái)說(shuō),是要輸出數(shù)據(jù)的地址。
(2)、size:要讀寫(xiě)的字節(jié)數(shù)。可以使用sizeof來(lái)獲得字節(jié)長(zhǎng)度。
(3)、count:要進(jìn)行讀寫(xiě)多少個(gè)size字的數(shù)據(jù)項(xiàng)。
(4)、fp:文件指針。
(5)、如果fread或fwrite調(diào)用成功,則函數(shù)返回值為count的值。
4、fwrite
見(jiàn)fread說(shuō)明。
5、fprintf和fscanf
調(diào)用方式:
fprintf(文件指針,格式字符串,輸出列表);
fscanf(文件指針,格式字符串,輸入列表);
說(shuō)明:
(1)、在內(nèi)存與磁盤(pán)頻繁交換數(shù)據(jù)的情況下,建議采用fread和fwrite實(shí)現(xiàn)。
三、文件的定位
1、rewind
調(diào)用方式:
FILE *fp;
rewind(fp);
說(shuō)明:
(1)、rewind使文件的位置指針重新定位于文件開(kāi)頭。
2、fseek
調(diào)用方式:
fseek(文件類型指針,位移量,起始點(diǎn));
說(shuō)明:
(1)、起始點(diǎn)用0、1、2代替,分別表示文件開(kāi)始、文件當(dāng)前位置、文件末尾。
(2)、位移量指起始點(diǎn)為基點(diǎn),向前移動(dòng)的字節(jié)數(shù)。一般為long型。
(3)、fseek常用二進(jìn)制文件,可以實(shí)現(xiàn)隨機(jī)讀寫(xiě)。
3、ftell
調(diào)用方式:
FILE *fp;
long i;
i=ftell(fp);
說(shuō)明:
(1)、函數(shù)返回文件當(dāng)前位置,如果調(diào)用出錯(cuò)則返回值為-1L。
四、出錯(cuò)的檢測(cè)
1、ferror
調(diào)用方式:
FILE *fp;
ferror(fp);
說(shuō)明:
(1)、返回值為0,表示未出錯(cuò),返回值為1,表示出錯(cuò)。
(2)、同一個(gè)文件每一次調(diào)用輸入輸出函數(shù),均產(chǎn)生一個(gè)新 的ferror函數(shù)值。
(3)、在執(zhí)行fopen函數(shù)時(shí),ferror函數(shù)的初始值自動(dòng)置為0。
2、clearerr
調(diào)用方式:
FILE *fp;
clearerr(fp);
說(shuō)明:
(1):使文件錯(cuò)誤標(biāo)志和文件結(jié)束標(biāo)志為0.