2 回答

TA貢獻1859條經驗 獲得超6個贊
int fseek( FILE *stream, long offset, int origin );
第一個參數stream為文件指針
第二個參數offset為偏移量,正數表示正向偏移,負數表示負向偏移
第三個參數origin設定從文件的哪里開始偏移,可能取值為:SEEK_CUR、 SEEK_END 或 SEEK_SET
SEEK_SET: 文件開頭
SEEK_CUR: 當前位置
SEEK_END: 文件結尾
其中SEEK_SET,SEEK_CUR和SEEK_END依次為0,1和2.
簡言之:
fseek(fp,100L,0);把文件內部指針移動到離文件開頭100字節處;
fseek(fp,100L,1);把文件內部指針移動到離文件當前位置100字節處;
fseek(fp,-100L,2);把文件內部指針退回到離文件結尾100字節處。

TA貢獻1816條經驗 獲得超6個贊
我前幾天也碰到fseek問題,體會頗深。
幾點建議:
1、你打開的方式是什么?比如r還是rb?這兩者差別特別大。
2、暫且不論r或rb,你這個文件從開頭到10的位置是什么字符,空格?空行?ASCII字符?或者其他?建議找個可以查看16進制的軟件打開看看,比如Ultraedit。然后再覺得偏移量是多少。
3、由于文件需要打開才能操作,檢查一下路徑和函數使用問題。如果是當前目錄,那直接fp=fopen("我的BIN","rb")或者 fp=fopen("我的BIN","r"),再fseek(fp,10,0)。如果不是當前目錄,記得目錄符號"\"在C語言里頭需要使用轉義字符才能實現,也就是"\\"才能實現"\",比如fp=fopen("c:\\我的BIN","rb")。
基本上以上三點可以解決fseek讀不出內容的問題。
添加回答
舉報