все ошибки на действительно больших файлах [дубликаты]

0

Согласно страницам unix man ftell либо возвращает -1, чтобы указать ошибку.

Определение функции:

long int ftell ( FILE * stream );

Где long int - 32-битное целое число (вам нужно long long для 64 бит)

однако (-1L) == 0x00000000FFFFFFFF LL который должен быть допустимым значением для действительно больших файлов (около 4 ГБ), и в этом случае, как мы узнаем, произошла ли ошибка или у нас просто большой файл?

  • 0
    Вы можете проверить errno или переключиться на off64_t ftello64(FILE *stream) . Обнаружение файла размером> 2 ^ 63 в байтах, по крайней мере, менее возможно, чем файл, имеющий> 2 ^ 31 байта.
  • 0
    @Neet запишите свой комментарий как ответ.
Показать ещё 4 комментария
Теги:
64bit

1 ответ

2
Лучший ответ

Вы можете либо проверить errno либо использовать 64-битную версию ftell именем off64_t ftello64(FILE *stream).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню