c语言fseek问题

使用fseek去读一个BIN文件,无法seek,非常困惑,首先路径是正确的,已经检测很多遍了。
fseek(“我的BIN”, 10 , 0);
fseek返回为0,接着读buffer也读不出来
这绝对不是一个低级问题,我检查很多遍,其它BIN文件就可以fseek 10bytes 然后读数据,BIN的数据我看过了,丛10bytes 后的数据 16 进制是正确的。

我前几天也碰到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读不出内容的问题。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-05-07
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字节处。本回答被网友采纳
第2个回答  2012-10-26
是不是路径带中文的原因?追问

没有带中文,路径为C:/XXX.BIN

追答

fseek(“我的BIN”, 10 , 0);

我也不怎么会用,“我的BIN” 当前的目录下的文件 带中文

相似回答