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