从C中的二进制文件中读取块状字节

时间:2011-11-15 09:21:06

标签: c file binary

我需要以8字节为单位读取字节的二进制文件字节。然后我需要检查字节5和字节7它们的值是否为零。如果它找到一个具有该条件的块,printf应该显示整个8字节块。 听起来很简单,但我并没有像我预期的那样让它工作。

我尝试了类似的东西,但没有成功:

    unsigned char buffer[8];
    FILE *file;
unsigned long fileLen;

//Open file
file = fopen("tcpstream-noframe.raw", "rb");
if (!file)
{
    fprintf(stderr, "Unable to open file %s", "tcpstream-noframe.raw");
    return 1;
}

for(int i=0; i++ ; i<9999) {
fread(buffer, 8, 1, file);
if(buffer[5] == 0 && buffer[7] == 0)
    printf("%X %X %X %X %X %X %X %X\n",buffer[0], buffer[1], buffer[2],  buffer[3],buffer[4], buffer[5], buffer[6], buffer[7]);
}

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:3)

您的周期无效。循环的正确语法是

for (initialization_expression;loop_condition;increment_expression){
    // statements
}

,这意味着你可能切换了loop_condition(i&lt; 9999)和increment_expression(i ++)。 另外,如果要检查字节5和7,则应该在C零索引数组中 检查缓冲区[4]和缓冲区[6]。