_lseek, _lseeki64

Перемещает указатель файла в указанное расположение.

long _lseek(
   int fd,
   long offset,
   int origin 
);
__int64 _lseeki64(
   int fd,
   __int64 offset,
   int origin 
);

Параметры

  • fd
    Идентификатор файла, относящийся к открытому файлу.

  • offset
    Количество байтов из ИСТОЧНИК.

  • ИСТОЧНИК
    Первоначальная позиция.

Возвращаемое значение

_lseek возвращает смещение в байтах от начала файла новой позиции._lseeki64 возвращает смещение в целом числе обновления 64 (sp2).Функция возвращает - 1L для указания ошибки.Если передается недопустимый параметром, например неверный идентификатор файла или значение ИСТОЧНИК указана недопустимая или by offset перед началом файла недопустимого параметра вызван обработчик, как описано в разделе Проверка параметров.Если выполнение может быть продолжено, то эти функции установки errno В EBADF и извлечение -1L.В устройствах неспособных поиска (как стержни и принтеров), undefined возвращаемое значение.

Дополнительные сведения об этих и других кодах ошибок см. в разделе _doserrno, errno, _sys_errlist и _sys_nerr.

Заметки

_lseek функция перемещает указатель файла, связанный с fd в новое расположение, которое offset байты из ИСТОЧНИК.Следующая операция файла происходит на новом месте.ИСТОЧНИК аргумент должен быть одной из следующих констант, которые определены в Stdio.h.

  • SEEK_SET
    Начало файла.

  • SEEK_CUR
    Текущее положение указателя файла.

  • SEEK_END
    Конец файла.

Можно использовать _lseek переместить указатель в файле или в любом месте за пределами файла.

Требования

Процедура

Обязательный заголовок

_lseek

<io.h>

_lseeki64

<io.h>

Дополнительные сведения о совместимости см. Совместимость во введении.

Библиотеки

Все версии Библиотеки времени выполнения C.

Пример

// crt_lseek.c
/* This program first opens a file named lseek.txt.
 * It then uses _lseek to find the beginning of the file,
 * to find the current position in the file, and to find
 * the end of the file.
 */

#include <io.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <share.h>

int main( void )
{
   int fh;
   long pos;               /* Position of file pointer */
   char buffer[10];

   _sopen_s( &fh, "crt_lseek.c_input", _O_RDONLY, _SH_DENYNO, 0 );

   /* Seek the beginning of the file: */
   pos = _lseek( fh, 0L, SEEK_SET );
   if( pos == -1L )
      perror( "_lseek to beginning failed" );
   else
      printf( "Position for beginning of file seek = %ld\n", pos );

   /* Move file pointer a little */
    _read( fh, buffer, 10 );

   /* Find current position: */
   pos = _lseek( fh, 0L, SEEK_CUR );
   if( pos == -1L )
      perror( "_lseek to current position failed" );
   else
      printf( "Position for current position seek = %ld\n", pos );

   /* Set the end of the file: */
   pos = _lseek( fh, 0L, SEEK_END );
   if( pos == -1L )
      perror( "_lseek to end failed" );
   else
      printf( "Position for end of file seek = %ld\n", pos );

   _close( fh );
}

Вход: crt_lseek.c_input

Line one.
Line two.
Line three.
Line four.
Line five.

Output

Position for beginning of file seek = 0
Position for current position seek = 10
Position for end of file seek = 57

См. также

Ссылки

ВВОДА-ВЫВОДА низкого уровня

fseek, _fseeki64

_tell, _telli64