Я пытаюсь прочитать из файла с определенным смещением (упрощенная версия):
typedef unsigned char u8;
FILE *data_fp = fopen("C:\\some_file.dat", "r");
fseek(data_fp, 0x004d0a68, SEEK_SET); // move filepointer to offset
u8 *data = new u8[0x3F0];
fread(data, 0x3F0, 1, data_fp);
delete[] data;
fclose(data_fp);
Проблема заключается в том, что данные будут содержать не 1008 байт, а 529 (кажется случайным). Когда он достигнет 529 байт, вызовы feof(data_fp) начнут возвращать значение true.
Я также пытался читать более мелкие фрагменты (по 8 байт за раз), но похоже, что он нажимает EOF, когда его еще нет.
Простой просмотр в шестнадцатеричном редакторе показывает, что осталось много байтов.