如果我运行:

FILE* pFile = fopen("c:\\08.bin", "r");
fpos_t pos;
char buf[5000];

int ret = fread(&buf, 1, 9, pFile);
fgetpos(pFile, &pos);

我得到ret = 9和pos = 9。

但是如果我跑步
FILE* pFile = fopen("c:\\08.bin", "r");
fpos_t pos;
char buf[5000];

int ret = fread(&buf, 1, 10, pFile);
fgetpos(pFile, &pos);

ret =预期的10,但pos = 11!

怎么会这样?

最佳答案

您需要以二进制模式打开文件:

FILE * pFile = fopen("c:\\08.bin", "rb");

差异是由于读取库认为是换行符的字符并对其进行扩展而引起的-二进制模式阻止扩展。

关于c++ - C++奇怪地更改了fgetpos,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1279177/

10-13 03:21