CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
lseek
lseek
Функция Перемещает указатель чтения/записи файла. Синтаксис #include <io.h> long lseek(int handle, long offset,int fromwhere); Файл, содержащий io.h прототип Описание Функция lseek устанавливает указатель файла, связанный с параметром handle, в новую позицию, которая находится на offset байтов относительно местоположения заданного параметром fromwhere. Параметр fromwhere должен иметь одно из трех значений 0, 1 или 2, которые представлены тремя символическими константами (определенными в файле stdio.h) следующим образом: -------------------------------------------------- Параметр fromwhere Месторасположение в файле -------------------------------------------------- SEEK_SET (0) начало файла SEEK_CUR (1) текущая позиция указателя файла SEEK_END (2) конец файла -------------------------------------------------- Возвращаемое Функция lseek возвращает значение смещения новой значение позиции указателя, измеряемой в байтах от начала файла. В случае ошибки функция lseek возвращает значение -1L и глобальная переменная errno получает одно из следующих значений: EBADF - Неверный номер файла. EINVAL - Неверный аргумент. На устройствах, непригодных для поиска, таких, как терминалы и принтеры, возвращаемое значение неопределено. Переносимость lseek поддерживается на всех системах UNIX. Смотрите также filelength, fseek, ftell, getc, open, sopen, ungetc, _write, write. Пример: #include<sys\stat.h> #include<string.h> #include<stdio.h> #include<fcntl.h> #include<io.h> int main(void) { int handle; char msg[] = "Это тест"; char ch; /* создать файл */ handle = open("TEST.$$$",O_CREAT|O_RDWR,S_IREAD|S_IWRITE); /* вывести в файл данные */ write(handle,msg,strlen(msg)); /* переместить указатель в начало файла */ lseek(handle,0L,SEEK_SET); /* считывать данные из файла, пока не встретим EOF */ do { read(handle,&ch,1); printf("%c",ch); } while(!eof(handle)); close(handle); return 0; }