Здесь только догадка, но я подозреваю, что вы на самом деле правильно читаете весь файл, но измеряете его неправильно.
Чтение файла (в двоичном режиме) не остановится на 0-байтовом байте, но есть несколько методов, связанных со строками.
Например, вы не можете измерить размер двоичного «блоба» с помощью strlen (), вы не можете скопировать его с помощью strcpy ().
Не видя фактического способа хранения и измерения данных, трудно понять, где что-то идет не так, но я сильно подозреваю, что вы действительно правильно читаете весь файл, если используете двоичный режим.