Вы не упоминаете язык, поэтому я собираюсь предположить C.
Я не вижу проблем с fread
, но fseek
и ftell
могут иметь проблемы.
Эти функции используют long int
в качестве типа данных для хранения позиции файла, а не что-то интеллектуальное, например fpos_t
или даже size_t
. Это означает, что они могут не работать с файлом размером более 2 ГБ и, безусловно, могут работать с файлом размером 16 ГБ.
Вам нужно посмотреть, насколько велик long int
на вашей платформе. Если это 64 бита, все в порядке. Если это 32, вы, вероятно, будете иметь проблемы при использовании ftell
для измерения расстояния от начала файла.
Попробуйте вместо этого использовать fgetpos
и fsetpos
.