fread()表现得很奇怪

时间:2010-03-27 18:27:08

标签: c fread

我在我的C程序中遇到问题,在使用fread()之后,文件指针有时会转到文件的末尾。

我会尝试更好地解释 - 代码看起来像:

dummy = ftell(fp);
fread(&buf, sizeof(unsigned char), 8, fp);
dummy = ftell(fp);

其中fp是指向打开文件的文件指针(用“w +”打开它,我用它作为二进制文件,我知道我也应该在那里有一个“b” ,但我听说添加它不是很重要..), dummy只是一个unsigned long变量, bufunsigned char[8]

现在,在调试时,ftell之前的freaddummy是262062 在ftell之后的freaddummy是262640 即使我只'移动'8字节..

有没有人知道这可能是什么原因..? 谢谢你的帮助:))

1 个答案:

答案 0 :(得分:5)

如果您不使用b打开文件,ftell()不会返回真相,只是一种仅对fseek()有用的“Cookie”。那里有很多不同的实现;查看系统的手册页以了解更多信息。