gpt4 book ai didi

c - fread 在不是 eof 时返回零

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:41 27 4
gpt4 key购买 nike

我正在使用此代码从文件中读取 2 个 12 位数。由于某种原因,它在文件末尾之前返回 -1。它出现在每个文件的同一位置,大约 1/2 的方式。我认为 fread 正在尽早解释文件结尾但不确定。 low8 的第三种情况是返回零。

int read12(FILE *infil)
{
static int number1 = -1, number2 = -1;
unsigned char hi8, lo4hi4, lo8;
int retval;

if(number2 != -1)
{
retval = number2;
number2 = -1;
}
else
{
if(fread(&hi8, 1, 1, infil) != 1)
return(-1);

if(fread(&lo4hi4, 1, 1, infil) != 1)
return(-1);

if(fread(&lo8, 1, 1, infil) != 1)
return(-1);


number1 = hi8 * 0x10;
number1 = number1 + (lo4hi4 / 0x10);
number2 = (lo4hi4 % 0x10) * 0x0100;

number2 = number2 + lo8;

retval = number1;
}

return(retval);
}

最佳答案

我看了 Kirningham & Ritchie 的书(C 的发明者),我发现了这个:« size_t fread(void *ptr, size_t size, size_t nobj, FILE *stream)fread 从流中读取到数组 ptr 中最多 nobj 个大小为 size 的对象。 fread 返回读取的对象数;这可能少于请求的数量 »

我认为问题出在你身上 « if »尝试改变你的条件,也许它会有所帮助:)

关于c - fread 在不是 eof 时返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58674744/

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