亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用fseek去讀一個BIN文件,無法seek,非常困惑,首先路徑是正確的,已經檢測很多遍了。

使用fseek去讀一個BIN文件,無法seek,非常困惑,首先路徑是正確的,已經檢測很多遍了。

小唯快跑啊 2023-03-18 17:13:53
fseek(“我的BIN”, 10 , 0); fseek返回為0,接著讀buffer也讀不出來這絕對不是一個低級問題,我檢查很多遍,其它BIN文件就可以fseek 10bytes 然后讀數據,BIN的數據我看過了,叢10bytes 后的數據 16 進制是正確的。
查看完整描述

2 回答

?
慕絲7291255

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字節處。


查看完整回答
反對 回復 2023-03-21
?
瀟湘沐

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讀不出內容的問題。

查看完整回答
反對 回復 2023-03-21
  • 2 回答
  • 0 關注
  • 114 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號