我需要以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]);
}
有什么想法吗?感谢。
答案 0 :(得分:3)
您的周期无效。循环的正确语法是
for (initialization_expression;loop_condition;increment_expression){
// statements
}
,这意味着你可能切换了loop_condition(i&lt; 9999)和increment_expression(i ++)。 另外,如果要检查字节5和7,则应该在C零索引数组中 检查缓冲区[4]和缓冲区[6]。