Чтение из файла осуществляется последовательно, то есть после выполнения очередной операции считывания указатель будет установлен на следующий непрочитанный символ. Изменить положение указателя можно при помощи функции fseek(). Она используется для перемещения указателя файла в определенную позицию. Функция fseek() задана в стандартной библиотеке языка Си — stdio.h, поэтому в начале программы, в которой функция будет использоваться, должна присутствовать декларация: #include < stdio.h >.
Описание функции fseek в си
Вам будет интересно:Расстояние между буквами. CSS Letter-spacing
Int fseek(FILE *FilePointer, long offset, int pos) - в функцию передаются такие аргументы:
- FILE *FilePointer - указатель на объект FILE. До использования функции необходимо открыть файл с помощью функции fopen().
- Offset — через данный аргумент в функцию передается, на сколько байт должен быть смещен указатель. Имеет тип длинное целое (long int). Положительное значение параметра означает смещение вправо, а отрицательное влево.
- Pos — определяет позицию, с которой добавляется смещение. Тип данного аргумента целое число (int).
Параметр pos определяет отправную точку, от которой будет отсчитываться смещение. Он может принимать три значения - 0, 1, 2, которые равносильны символьным константам SEEK_SET(0), SEEK_CUR(1) и SEEK_END(2):
Функция си fseek возвращает ноль в случае успешного перемещения указателя и любое ненулевое значение, если она не смогла выполнить требуемое действие, например, в случае выхода указателя за границы файла. Возвращаемое значение будет равно EBADF при передаче в функцию неверного указателя файла, EINVAL в случае недопустимого значения аргумента или ESPIPE при ошибке в параметре offset, например, выход за пределы файла.
Пример
Программа
Описание
#include
int main()
{
FILE *fp;
fp = fopen("test.txt", "r");
fseek(fp, 7, SEEK_CUR);
printf("%ld", ftell(fp));
fclose(fp);
return 0;
}
Подключаем стандартную библиотеку языка С stdio.h
Задаем файловую переменную
Открываем файл на чтение
Перемещаем указатель на 7 байт вперед от текущего положения (поскольку мы только открыли файл, указатель находится в начале)
Печатаем текущее положение курсора при помощи функции ftell()
Закрываем файл
Кроме рассмотренной, имеются и другие функции для работы с указателем, например:
- Rewind() - используется для установки указателя в начало файла.
- Ftell() - возвращает положение указателя в данный момент.
- Feof() - служит для идентификации конца файла. При достижении конца файла значение функции будет равно true.
Заключительные замечания
При работе с данной функцией нужно помнить, она работает только с потоковым вводом-выводом. Также не следует забывать закрывать файл функцией fclose().