Структура бинарника такая:
Time - 4 bytes
Type - 2 bytes
Subtype - 2 bytes
Length - 4 bytes
Data - размер Lenght
и потом снова - time, type, subtype, length, data и тд.
1. Сначала считываем 4 Time байта
2. Переходим на 4 байта вперед - считываем 2 byte of Type
3. Переходим еще на 4+2 байта вперед - считываем еще 2 байта
4. Еще переход на 4+2+2 байта и считываем 4 byte of LENGH
Далее по значению Length, перепрыгиваем количество байт Lenght, не считывая DATA.
НУЖНО узнать СКОЛЬКО таких конструкций в бинарнике.
Код: Выделить всё
#include <stdio.h>
int main()
{
FILE *file;
char buffer1[5];
char buffer2[3];
char buffer3[3];
char buffer4[5];
int n,m,k,l;
int i = 0;
if (file = fopen("example.txt", "rb"))
{
// while(!feof(file))
// {
n = fread(buffer1, 1, 4, file); // возвращает количество считанных байтов
buffer1[n] = 0;
/* a char array is only a string if it has the null character at the end */
fseek ( file, n , SEEK_SET );
m = fread(buffer2, 1, 2, file);
buffer2[m] = 0;
fseek ( file, n+m, SEEK_SET);
k = fread(buffer3, 1, 2, file);
buffer3[k] = 0;
fseek ( file, n+m+k, SEEK_SET);
l = fread(buffer4, 1, 4, file);
buffer4[l] = 0;
fseek ( file, n+m+k+(long int)buffer4, SEEK_SET);
// i++;
// }
fclose(file);
printf ("Number of reading %d\n", i-1);
printf("1st %d characters of the file:\n%s\n", n, buffer1);
printf("2nd %d characters of the file:\n%s\n", m, buffer2);
printf("3rd %d characters of the file:\n%s\n", k, buffer3);
printf("4 %d characters of the file:\n%s\n", l, buffer4);
}
return 0;
}
Помогите прочесть весь файл.
Спасибо.