2 回答

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

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