第 1 頁(yè):8.1 C文件概述 |
第 4 頁(yè):8.2 文件處理程序結(jié)構(gòu)和文件輸入輸出常用庫(kù)函數(shù) |
函數(shù)fseek()的說(shuō)明形式為
fseek(FILE *fp, long offset, int ptrname)
其中ptname表示定位基準(zhǔn)。只允許0,l或2。其中0代表以文件首為基準(zhǔn),1代表以當(dāng)前位置為基準(zhǔn),2代表以文件尾為基準(zhǔn)。0、l和2分別被定義為名稱SEEK-SET、SEEK-CUR和SEEK-END。long型形參offset是偏移量,表示以prname為基準(zhǔn),偏移的字節(jié)數(shù)。因它是long型形參,當(dāng)以整數(shù)作為它的實(shí)參調(diào)用函數(shù) fseek()時(shí),直在常數(shù)之后加上字母L,表示是long型常量。見(jiàn)下面調(diào)用函數(shù)fseek()的例子:
fseek(fp,4OL,SEEK-SET);
fseek(fp,20L,SEEK-CUR);
fseek(fp,-30L,SEEK-END);
分別表示將文件的當(dāng)前位置定于離文件頭4O個(gè)字節(jié)處、將文件當(dāng)前位置定于離當(dāng)前位置20個(gè)字節(jié)處、將文件的當(dāng)前位置定于文件尾后退30個(gè)字節(jié)處。
函數(shù)fseek()一般用于二進(jìn)制文件的隨機(jī)讀寫,這是因?yàn)閿?shù)據(jù)在二進(jìn)制文件中的表示形式與數(shù)據(jù)在內(nèi)存中的表示形式相同,各種類型的數(shù)據(jù)表示都有確定的字節(jié)數(shù)。而數(shù)據(jù)在正文文件中的表示形式與數(shù)據(jù)在內(nèi)存中的表示形式不同,它們?cè)谳斎胼敵鰰r(shí),數(shù)據(jù)的內(nèi)外表示形式要進(jìn)行轉(zhuǎn)換,數(shù)值類型的數(shù)據(jù)在正文文件中的表示沒(méi)有固定的字節(jié)數(shù),計(jì)算位置時(shí)會(huì)發(fā)生混亂。
函數(shù)ftell()用于得到文件當(dāng)前位置相對(duì)于文件首的偏移字節(jié)數(shù)。在隨機(jī)方式存取文件時(shí),由于文件位置頻繁的前后移動(dòng),程序不容易確定文件的當(dāng)前位置。調(diào)用函數(shù)ftell()就能非常容易地確定文件的當(dāng)前位置。
函數(shù)ftell()的說(shuō)明形式為
long ftell(FILE *fp)
利用函數(shù)ftell()也能方便地知道一個(gè)文件的長(zhǎng)。如以下語(yǔ)句序列:
fseek(fp,OL,SEEK-END);
len=ftell(fp)
首先將文件的當(dāng)前位置移到文件的末尾,然后調(diào)用函數(shù)ftell()獲得當(dāng)前位置相對(duì)于文件首的偏移,該偏移值等于文件所含字節(jié)數(shù)。
8.文件錯(cuò)誤測(cè)式庫(kù)函數(shù)
文件處理程序常用輸入輸出庫(kù)函數(shù)的返回值來(lái)判斷輸入輸出是否發(fā)生錯(cuò)誤,也可以調(diào)用文件錯(cuò)誤測(cè)試函數(shù)了解剛完成的文件輸入輸出函數(shù)的調(diào)用是否有錯(cuò)。文件錯(cuò)誤測(cè)試函數(shù)的說(shuō)明形式為
int ferror(FILE *fp)
函數(shù)的返回值是與文件指針中相聯(lián)的最近一次文件庫(kù)函數(shù)調(diào)用是否發(fā)生錯(cuò)誤。若有錯(cuò),函數(shù)返回非0值,若沒(méi)有錯(cuò)誤,函數(shù)返回0值。通常在這非0值,詳細(xì)指出錯(cuò)誤的類別和原因。
相關(guān)推薦:推薦:2010年計(jì)算機(jī)軟件水平考試必備完美攻略北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |