gpt4 book ai didi

c - 为什么 fread() 返回 0?

转载 作者:太空宇宙 更新时间:2023-11-04 08:46:12 24 4
gpt4 key购买 nike

我不明白。文件存在。它具有与 sizeIndexI 保持的值相符的长度。我在文件的开头(我不是吗?)而且无论如何它不会从该文件中读取...

当然。该文件之前也已成功打开。 (在本例中为 a+)文件的访问权限为 ofc。也给了。

fpNewsPageLogger = fopen ("/NewsLogx", "a+");

if (fpNewsPageLogger == nullptr)
{
/*...*/
}
else
{
fseek (fpNewsPageLogger, 0 ,SEEK_END);
sizeIndexI = ftell (fpNewsPageLogger);
rewind (fpNewsPageLogger);
DebugLogMsg10 (pDebugLogger, sizeThreadID, "ReadAmount:%d IndexI:%d!", sizeBytesRead, sizeIndexI);

cpTmpNews = calloc (sizeIndexI, sizeof(char));

if (cpTmpNews == nullptr)
{
fclose (fpNewsPageLogger);
return;
}

sizeBytesRead = fread (cpTmpNews, sizeof (char), sizeIndexI, fpNewsPageLogger);

/*...*/
}

有什么我没有考虑到的吗?

最佳答案

首先,标准库不需要有意义地支持从 SEEK_END 中查找。您是否检查了 sizeIndexI 的值?也许它只是零?如果您要求 fread 读取零元素,它会返回零。

其次,您将流作为文本流打开。对于 ftell 返回的文本流值,通常没有任何有意义的数字语义。在一般情况下,文本流的 ftell 返回一个实现定义的当前位置编码,而不是从文件开头的字节偏移量。如果您想将流作为二进制流使用,请将“b”添加到 fopen

fpNewsPageLogger = fopen ("/NewsLogx", "ab+");

关于c - 为什么 fread() 返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21589347/

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