. fopen()函數(shù)
fopen函數(shù)用于打開(kāi)文件, 其調(diào)用格式為:
FILE *fopen(char *filename, *type);
在介紹這個(gè)函數(shù)之;前, 先了解一下下面的知識(shí)。
(1) 流(stream)和文件(file)
流和文件 在Turbo C2.0中是有區(qū)別的, Turbo C2.0 為編程者和被訪問(wèn)的設(shè)
備之間提供了一層抽象的東西, 稱(chēng)之為"流", 而將具體的實(shí)際設(shè)備叫做文件。
流是一個(gè)邏輯設(shè)備, 具有相同的行為。因此, 用來(lái)進(jìn)行磁盤(pán)文件寫(xiě)的函數(shù)也同樣
可以用來(lái)進(jìn)行打印機(jī)的寫(xiě)入。在Turbo C2.0中有兩種性質(zhì)的流: 文字流( text
stream)和二進(jìn)制(binary stream)。對(duì)磁盤(pán)來(lái)說(shuō)就是文本文件和二進(jìn)制文件。本
軟件為了便于讓讀者易理解Turbo C2.0語(yǔ)言而沒(méi)有對(duì)流和文件作特別區(qū)分。
(2) 文件指針FILE
實(shí)際上FILE是一個(gè)新的數(shù)據(jù)類(lèi)型。它是Turbo C2.0的基本數(shù)據(jù)類(lèi)型的集合,
稱(chēng)之為結(jié)構(gòu)指針。有關(guān)結(jié)構(gòu)的概念將在第四節(jié)中詳細(xì)介紹, 這里只要將FILE理解
為一個(gè)包括了文件管理有關(guān)信息的數(shù)據(jù)結(jié)構(gòu), 即在打開(kāi)文件時(shí)必須先定義一個(gè)文
件指針。
(3) 以后介紹的函數(shù)調(diào)用格式將直接寫(xiě)出形式參數(shù)的數(shù)據(jù)類(lèi)型和函數(shù)返回值
的數(shù)據(jù)類(lèi)型。例如: 上面打開(kāi)文件的函數(shù), 返回一個(gè)文件指針, 其中形式參數(shù)有
兩個(gè), 均為字符型變量(字符串?dāng)?shù)組或字符串指針)。本軟件不再對(duì)函數(shù)的調(diào)用格
式作詳細(xì)說(shuō)明。
現(xiàn)在再來(lái)看打開(kāi)文件函數(shù)的用法。
fopen()函數(shù)中第一個(gè)形式參數(shù)表示文件名, 可以包含路徑和文件名兩部分。
如:
"B:TEST.DAT"
"C:\\TC\\TEST.DAT"
如果將路徑寫(xiě)成"C:\TC\TEST.DAT"是不正確的, 這一點(diǎn)要特別注意。
第二個(gè)形式參數(shù)表示打開(kāi)文件的類(lèi)型。關(guān)于文件類(lèi)型的規(guī)定參見(jiàn)下表。
表 文件操作類(lèi)型
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
字符 含義
────────────────────────────
"r" 打開(kāi)文字文件只讀
"w" 創(chuàng)建文字文件只寫(xiě)
"a" 增補(bǔ), 如果文件不存在則創(chuàng)建一個(gè)
"r+" 打開(kāi)一個(gè)文字文件讀/寫(xiě)
"w+" 創(chuàng)建一個(gè)文字文件讀/寫(xiě)
"a+" 打開(kāi)或創(chuàng)建一個(gè)文件增補(bǔ)
"b" 二進(jìn)制文件(可以和上面每一項(xiàng)合用)
"t" 文這文件(默認(rèn)項(xiàng))
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
如果要打開(kāi)一個(gè)CCDOS子目錄中, 文件名為CLIB的二進(jìn)制文件, 可寫(xiě)成:
fopen("c:\\ccdos\\clib", "rb");
如果成功的打開(kāi)一個(gè)文件, fopen()函數(shù)返回文件指針, 否則返回空指針
(NULL)。由此可判斷文件打開(kāi)是否成功。
2. fclose()函數(shù)
fclose()函數(shù)用來(lái)關(guān)閉一個(gè)由fopen()函數(shù)打開(kāi)的文件 , 其調(diào)用格式為:
int fclose(FILE *stream);
該函數(shù)返回一個(gè)整型數(shù)。當(dāng)文件關(guān)閉成功時(shí), 返回0, 否則返回一個(gè)非零值。
可以根據(jù)函數(shù)的返回值判斷文件是否關(guān)閉成功。
例10:
#iclude
main()
{
FILE *fp; /*定義一個(gè)文件指針*/
int i;
fp=fopen("CLIB", "rb"); /*打開(kāi)當(dāng)前目錄名為CLIB的文件只讀*/
if(fp==NULL) /*判斷文件是否打開(kāi)成功*/
puts("File open error");/*提示打開(kāi)不成功*/
i=fclose(fp); /*關(guān)閉打開(kāi)的文件*/
if(i==0) /*判斷文件是否關(guān)閉成功*/
printf("O,K"); /*提示關(guān)閉成功*/
else
puts("File close error");/*提示關(guān)閉不成功*/
}
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。