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