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