Как обработать файл размером более 2 ГБ? - PullRequest
2 голосов
/ 08 августа 2011

в c fseek, fopen, эта вся функция работает долго int означает только файл обработки 2 ГБ. Теперь как я могу открыть файл размером более 2 ГБ?

1 Ответ

11 голосов
/ 08 августа 2011

Как уже пояснили комментаторы, можно ли открыть файл размером более 2 ГБ, зависит от ОС и библиотеки C, а не от компилятора на sizeof(long).Если ваша ОС поддерживает такие файлы, вы должны иметь возможность fopen их, хотя вам, возможно, придется установить флаг (#define _FILE_OFFSET_BITS 64 для Linux).

Тогда fseek действительно не может искать позиции дальшедалеко, чем LONG_MAX за один звонок.Вы можете либо вызвать fseek несколько раз в цикле, что может быть громоздко, либо проверить, есть ли у вашей платформы fseeko, которая принимает аргумент смещения типа off_t.Этот тип должен быть достаточно большим, чтобы фиксировать размер любого (обычного) файла в вашей системе, если вы установите правильные параметры.fseeko доступен в более новых версиях Linux и всех POSIX-2001-совместимых ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...