- 论坛徽章:
- 0
|
下面这段代码,我在第二次seek里用了fseeko。结果导致在64位机器下fread失败,而32位却没问题。如果换成fseek就一切正常。为什么呢?而且我用ftell测试,seek是成功的。
貌似只有传入给fseeko的是一个负数才会出现这种情况。
我的系统是debian
- #include <stdio.h>
- #include <stdlib.h>
- int main(int argc, char *argv[]) {
- unsigned char ftyp_atom[8];
- FILE *infile = fopen(argv[1], "rb");
- fseek(infile, 8, SEEK_CUR);
- printf ("pos#1:%d\n",ftell(infile));
- fseeko(infile, -8, SEEK_CUR);
- printf ("pos#2:%d\n",ftell(infile));
- int rs=fread(ftyp_atom, 8, 1, infile);
- printf ("size:%d\n",sizeof(off_t));
- printf ("rs:%d\n",rs);
- return 0;
- }
复制代码
更新:问题解决了,详情看:http://www.unix.org/version2/whatsnew/lfs20mar.html
[ 本帖最后由 surfchen 于 2008-5-20 11:12 编辑 ] |
|