3.3.3          Управління покажчиком запису-читання

Як і для потокового файлового доступу, в Turbo С є функція управління поточною позицією покажчика запису-читання, передбачена для використання з файлами, асоційованими з префіксами. Це функція - lseek().

#include <io.h>
long lseek( int handle, long offset, int fromwhere )

“Зсуває” покажчик запису-читання відкритого файлу, асоційованого з префіксом handle, на offset байт. Якщо offset>0, виконується зміщення в сторону EOF, якщо offset<0, виконується зміщення до початку файлу. Параметр frormwhere задає точку відліку для зміщення:

SEEK_SET (0)

зміщення виконується від початку файлу

SEEK_CUR (1)

зміщення виконується від поточної позиції покажчика запису-читання файлу

SEEK_END (2)

зміщення виконується від кінця файлу

Перелічені символьні константи визначені у файлах <stdio.h> та <io.h>. У випадку успіху функція повертає встановлену позицію покажчика запису-читання, виміряну від початку файлу. У випадку помилки повертається –1L, а код помилки записується в зовнішню змінну errno.

Так як lseek() повертає встановлену позицію покажчика, то для визначення поточної позиції покажчика в файлі достатньо виконати “порожнє” переміщення покажчика відносно поточної позиції, наприклад:

long file_pos; int handle;
...
/* Виконано префіксне відкриття файлу */
...
file_pos = lseek( handle, 0L, SEEK_CUR );
...