fseek

fseek

用來讀寫一個數據塊的函數
int fseek(FILE *stream, long offset, int fromwhere);函數設置文件指針stream的位置。[1]如果執行成功,stream将指向以fromwhere為基準,偏移offset(指針偏移量)個字節的位置,函數返回0。如果執行失敗(比如offset超過文件自身大小),則不改變stream指向的位置,函數返回一個非0值。
    中文名: 外文名:fseek 适用領域: 所屬學科: 類型:函數 領域:計算機 注意:不是定位文件指針

功能

重定位流(數據流/文件)上的文件内部位置指針。

注意:不是定位文件指針,文件指針指向文件/流。位置指針指向文件内部的字節位置,随着文件的讀取會移動,文件指針如果不重新賦值将不會改變指向别的文件。

描述

函數設置文件指針stream的位置。如果執行成功,stream将指向以fromwhere(偏移起始位置:文件頭0(SEEK_SET),當前位置1(SEEK_CUR),文件尾2(SEEK_END))為基準,偏移offset(指針偏移量)個字節的位置。如果執行失敗(比如offset超過文件自身大小),則不改變stream指向的位置。

fseek函數和lseek函數類似,但lseek返回的是一個off_t數值,而fseek返回的是一個整型。

返回值

成功,返回0,失敗返回-1,并設置errno的值,可以用perror()函數輸出錯誤。

注意事項

fseek函數的文件指針,應該為已經打開的文件。如果沒有打開的文件,那麼将會出現錯誤。fseek函數也可以這樣理解,相當于在文件當中定位。這樣在讀取規律性存儲文件時可以利用其OFFSET偏移量讀取文件上任意的内容。

fseek函數一般用于二進制文件,也可以用于文本文件。用于文本文件操作時,需特别注意回車換行的情況:因為在一般浏覽工具如UltraEdit中,回車換行視為兩個字符0x0D和0x0A,但真實的文件讀寫和定位時卻按照一個字符0x0A進行處理,因此碰到此類問題時,可以考慮将文件整個讀入内存,然後在内存中手工插入0x0D的方法,這樣可以達到較好的處理效果。

相關詞條

相關搜索

其它詞條