如果我运行:
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/