Fseek
Для позиционирования внутри файла, открытого потоком с помощью функции fopen, предназначена функция fseek :
int fseek (FILE *stream, long offset, int origin);
В этой функции параметр offset задает новое содержимое указателя текущей позиции в файле stream, а параметр origin определяет способ задания новой позиции. Этот оператор может иметь значения, аналогичные используемым в функции lseek :
Значение | Описание |
SEEK_SET | Абсолютное смещение от начала файла |
SEEK_CUR | Смещение относительно текущей позиции |
SEEK_END | Смещение относительно конца файла |
При открытии файла указатель текущей позиции устанавливается на начало файла. Операции ввода или вывода вызывают увеличение значения этого указателя на количество, соответственно, прочитанных или записанных байт.
Функция fseek позволяет вам установить указатель за конец файла, однако при попытке установит указатель до начала файла функция возвратит признак ошибки - ненулевое значение.
При использовании функции fseek для позиционирования внутри файлов, открытых в текстовом режиме, необходимо учитывать особенность обработки текстовых файлов - автоматическую замену символа возврата каретки CR на пару символов: возврат каретки CR и перевод строки LF. Для текстовых файлов функция fseek будет правильно работать только в следующих двух случаях: