gpt4 book ai didi

c - 检测不完整的 32 位二进制数据

转载 作者:行者123 更新时间:2023-11-30 15:17:39 26 4
gpt4 key购买 nike

我有一个二进制文件,我需要从中读取 32 位模式 - 如果达到 EOF 使其小于 32 位 - 我需要错误指出意外的 eof,否则就会中断。我尝试了很多,但无法使不完整的字节检测部分正常工作。有人可以提供一些如何实现它的指针吗?我确实想过一次探索一个字节 byte[0] 并评估它的 EOF 但没有成功。

   for (;;)
{
bytes_read = fread(buffer, 4, 1, inFile);
if (bytes_read == 1)
{
// perform the task
}
else
{
// detect if its incomplete sequence or EOF and output appropriately
}
}

P.S:根据评论编辑 fread -

最佳答案

您的代码告诉 fread 从文件中读取一条包含 4 个字节的记录。如果记录不完整,则会返回0(0条记录读取,错误)。如果记录丢失(在文件末尾),它也会返回0(读取0条记录,正常情况)。您必须调整代码以区分这些情况,让 fread 返回 4(字节)。

如果无法在文件末尾读取 4 个字节,则希望 fread 输出小于 4 的值。要实现此行为,您应该告诉 fread 以 1 个字节为单位读取:

bytes_read = fread(buffer, 1, 4, inFile);

然后看数字:

if (bytes_read == 4)
{
// perform the task
}
else if (bytes_read > 0)
{
// bad file format - not a multiple of 4 bytes
}
else if (bytes_read == 0)
{
break; // success
}
else // bytes_read = -1
{
// general file error
}

关于c - 检测不完整的 32 位二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32194958/

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