使用fseek去读一个BIN文件,无法seek,非常困惑,首先路径是正确的,已经检测很多遍了。

fseek(“我的BIN”, 10 , 0); 
fseek返回为0,接着读buffer也读不出来
这绝对不是一个低级问题,我检查很多遍,其它BIN文件就可以fseek 10bytes 然后读数据,BIN的数据我看过了,丛10bytes 后的数据 16 进制是正确的。

小唯快跑啊
浏览 95回答 2
2回答

慕丝7291255

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字节处。

潇湘沐

我前几天也碰到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读不出内容的问题。
打开App,查看更多内容
随时随地看视频慕课网APP