_lseeki64是否有BUG?
很奇怪,这个函数好像有BUG。当 seek 之前 fread , 就会造成 seek 失败,虽然他返回成功,但是从后面的 read 来看,seek 已经失败了。如果 seek 之前没有任何 read ,那么就一切正确了。
另外,如果在 seek 之前调用 rewind ,则无论什么情况都能成功。
??
// 打开一个文件
FILE *pFile = fopen("xx.txt", "rb");
// 如果读取一些,则会造成下面的 seek 失败,无法正确 seek。如果不读取,则 seek 能正确
fread(buf, 1,10, pFile);
// 他一直会返回成功,但是如果上面 read 了,他就无法正确 seek。 但是如果 rewind 就无论什么情况都一定能成功。
rewind(pFile);
_lseeki64(pFile->_file, -10, SEEK_END);
// 看看读出内容是否正确
fread(buf, 1, 10, pFile);