_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 origin
bayt 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_errlist
ve _sys_nerr
.
Açıklamalar
İşlev, _lseek
ile fd
ilişkilendirilmiş dosya işaretçisini konumundan origin
bayt 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