Я читаю по частям двоичного файла, используя объект FILE в C ++. Вот fseek и соответствующий вызов fread:
fseek(fp, startLocation, SEEK_SET);
fread(data, m_sizeOfData, 1, fp);
m_sizeOfData является целым числом, превышающим 400 тысяч. Похоже, что он должен прочитать все 400 тысяч байт из двоичного файла в данные (кстати, это char [m_sizeOfData]), однако он останавливается после 6 или 7 символов в символе Unicode, который просто выглядит как блок. Я думаю, что это может означать нулевое завершение? Я не уверен в этом. Это не относится к каждому фрагменту файла, в котором я читаю. Большинство из них, кажется, работают (в целом) правильно.
Почему это может быть и есть ли способ правильно прочитать все данные?
Редактировать
fp определяется так:
FILE* fp;
_wfopen_s(&fp, L"C://somedata.dat", L"rb");
Этот символ в шестнадцатеричном формате - 0x06, за которым следует 0x00.
Данные определяются следующим образом: char * data = new char [m_sizeOfData];
редактировать 2 :
Я также заметил, что в другой файл загружен какой-то мусор. Мусор выглядит так:
YYYY «« «« «« «« МТД
Это потому, что он пытается завершить определенное количество байтов?