что такое различие между fgetpos/fsetpos и ftell/fseek

Что является различием между использованием функций fgetpos() и fsetpos() и использование функций ftell() и fseek() получить и установить положение в файле?

Что fgetpos() и fsetpos() хороший для? Почему они использовались бы вместо ftell() и fseek()?

29
задан Richard Chambers 10 May 2018 в 18:47
поделиться

2 ответа

Итак, из справочной страницы мы видим, что ftell и fseek используют тип long int для представления смещений (позиций) в файле, и поэтому могут быть ограничены смещениями, которые могут быть представлены в виде длинного внутр. (Тип long int не гарантирует хранения значений больше 2 ** 31-1, ограничивая максимальное смещение до 2 гигабайт). С другой стороны, новые функции fgetpos и fsetpos используют специальный typedef, fpos_t, для представления смещений. Тип, стоящий за этим typedef, при правильном выборе может представлять произвольно большие смещения, поэтому fgetpos и fsetpos могут использоваться с произвольно большими файлами. fgetpos и fsetpos также записывают состояние, связанное с многобайтовыми потоками.

17
ответ дан 28 November 2019 в 01:50
поделиться

Функционально разницы нет. , хотя интерфейсы определяются по-другому. Оба они реализованы, потому что оба являются частью POSIX.

-2
ответ дан 28 November 2019 в 01:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: