共用方式為


_lseek、_lseeki64

移動檔案指標至指定的位置。

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

參數

  • fd
    參考開啟檔案的檔案描述項。

  • 位移
    位元組數從 來源的

  • 原點
    初始位置。

傳回值

_lseek 傳回的位移,以位元組為單位),則從檔案的開頭。 _lseeki64 會在 64 位元整數的位移。 函式會傳回 1L 表示錯誤。 如果傳遞無效的參數,例如錯誤的檔案描述項或 原始 值無效或 位移來 指定的位置是,在檔案的一開始,無效的參數處理常式被叫用之前,如 參數驗證中所述。 如果允許繼續執行,這些函式會將 errno 設為 EBADF,並傳回 -1L。 在裝置上不能達到尋找 (例如終端和印表機),傳回值為 undefined。

如需有關這些錯誤碼和其他錯誤碼的詳細資訊,請參閱 _doserrno、errno、_sys_errlist 和 _sys_nerr

備註

_lseek 函式移動檔案指標與 fd 從原點開始位移位元組的新位置。 檔案中的下一個作業會在新位置時發生。 原點 引數必須是下列其中一個常數,在 Stdio.h 定義。

  • SEEK_SET
    檔案的開頭。

  • SEEK_CUR
    檔案指標目前的位置

  • SEEK_END
    檔案結尾。

您可以使用 _lseek 重新定位指標任何檔案或在檔案的結尾。

需求

常式

必要的標頭

_lseek

<io.h>

_lseeki64

<io.h>

如需更多關於相容性的資訊,請參閱入門介紹中的 相容性 (Compatibility)

程式庫

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

請參閱

參考

低層級 I/O

fseek、_fseeki64

_tell、_telli64