gpt4 book ai didi

c++ fread 奇怪地改变 fgetpos

转载 作者:太空狗 更新时间:2023-10-29 23:48:21 25 4
gpt4 key购买 nike

如果我运行:

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++ fread 奇怪地改变 fgetpos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1279177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com