_lseek, _lseeki64
Dosya işaretçisi belirtilen konuma taşır.
long _lseek(
int fd,
long offset,
int origin
);
__int64 _lseeki64(
int fd,
__int64 offset,
int origin
);
Parametreler
fd
Açık olan bir dosyaya başvuran dosya tanımlayıcısı.mahsup hesabı
Bayt sayısı kadar kaynak.menşei
Başlangıç konumu.
Dönüş Değeri
_lseekUzaklık, dosyanın yeni konumunu başından bayt cinsinden döndürür._lseeki64Uzaklık 64-bit bir tamsayı döndürür.Bir hatayı göstermek için –1L işlevini verir.Bozuk dosya tanımlayıcısı veya değeri gibi geçersiz bir parametre geçirildi, kaynak geçersiz ya da belirtilen konum uzaklık olan dosya başlamadan önce geçersiz parametre işleyicisi, açıklandığı şekilde çağrılır Parametre Doğrulama.Yürütülmesine devam etmek için izin verilmişse, bu işlevler kümesi errno için EBADF ve M-1 döndürür.Dönüş değeri (Terminaller ve yazıcılar gibi) arayan incapable aygıtları üzerinde tanımlı değil.
Bunlar ve diğer hata kodları hakkında daha fazla bilgi için bkz: _doserrno, errno, _sys_errlist ve _sys_nerr.
Notlar
_lseek İşlevi ile ilişkili dosya işaretçisi taşır fd olan yeni bir konuma uzaklık baytlar kaynak.Sonraki operasyon dosya üzerinde yeni konumda oluşur.Başlangıcı bağımsız değişkeni Stdio.h içinde tanımlanan aşağıdaki sabitlerden biri olmalıdır.
SEEK_SET
Dosya başına.SEEK_CUR
Dosya işaretçisi geçerli konumu.SEEK_END
Dosya sonu.
Kullanabileceğiniz _lseek işaretçiyi bir dosya ya da Dosya sonunun ötesinde herhangi bir yerde yeniden konumlandırmak için.
Gereksinimler
Yordamı |
Gerekli başlık |
---|---|
_lseek |
<io.h> |
_lseeki64 |
<io.h> |
Daha fazla uyumluluk bilgileri için bkz: Uyumluluk giriş.
Kitaplıkları
Tüm sürümleri c çalışma zamanı kitaplıkları.
Ö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