_lseek, _lseeki64

Dosya işaretçisini belirtilen konuma taşır.

Sözdizimi

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

Parametreler

fd
Açık bir dosyaya başvuran dosya tanımlayıcısı.

offset
'den gelen originbayt sayısı.

origin
başlangıç konumu.

Dönüş değeri

_lseek , dosyanın başından itibaren yeni konumun bayt cinsinden uzaklığını döndürür. _lseeki64 64 bitlik bir tamsayıda uzaklığı döndürür. İşlev hata belirtmek için -1L döndürür. Hatalı bir dosya tanımlayıcısı gibi geçersiz bir parametre geçirilirse veya değeri origin geçersizse veya tarafından offset belirtilen konum dosyanın başlangıcından önceyse, Parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, bu işlevler olarak EBADF ayarlanır errno ve -1L döndürür. Arama özelliği olmayan cihazlarda (terminaller ve yazıcılar gibi), dönüş değeri tanımlanmamıştır.

Bunlar ve diğer hata kodları hakkında daha fazla bilgi için bkz. errno, _doserrno, _sys_errlistve _sys_nerr.

Açıklamalar

İşlev, _lseek ile fd ilişkilendirilmiş dosya işaretçisini konumundan originbayt olan offset yeni bir konuma taşır. Dosyadaki sonraki işlem yeni konumda gerçekleşir. origin Bağımsız değişken, Stdio.h dosyasında tanımlanan aşağıdaki sabitlerden biri olmalıdır.

origin değer Açıklama
SEEK_SET Dosyanın başlangıcı.
SEEK_CUR Dosya işaretçisinin geçerli konumu.
SEEK_END Dosya sonu.

İşaretçiyi dosyanın herhangi bir yerine veya dosyanın sonunun ötesine konumlandırmak için kullanabilirsiniz _lseek .

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Gereksinimler

Yordam Gerekli başlık
_lseek <io.h>
_lseeki64 <io.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Kitaplıklar

C çalışma zamanı kitaplıklarının tüm sürümleri.

Örnek

// 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 );
}

Giriş: crt_lseek.c_input

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

Çıktı

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

Ayrıca bkz.

Alt düzey G/Ç
fseek, _fseeki64
_tell, _telli64