16-08-2018 01:26

Использование функции си fseek

Чтение из файла осуществляется последовательно, то есть после выполнения очередной операции считывания указатель будет установлен на следующий непрочитанный символ. Изменить положение указателя можно при помощи функции fseek(). Она используется для перемещения указателя файла в определенную позицию. Функция fseek() задана в стандартной библиотеке языка Си — stdio.h, поэтому в начале программы, в которой функция будет использоваться, должна присутствовать декларация: #include < stdio.h >.

Описание функции fseek в си

Расстояние между буквами. CSS Letter-spacingВам будет интересно:Расстояние между буквами. 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):

  • Значение параметра pos равно SEEK_SET — смещение будет определяться относительно начала файла.
  • При значении равном SEEK_CUR смещение считается от текущей позиции курсора.
  • Если он имеет значение SEEK_END, значит, смещение будет отсчитываться от конца файла.
  • Функция си 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().



    Источник