_lseek, _lseeki64
将文件指针指定的位置。
long _lseek(
int fd,
long offset,
int origin
);
__int64 _lseeki64(
int fd,
__int64 offset,
int origin
);
参数
fd
引用打开文件的描述符。偏移量
字节数从原点 的。原点
初始位置。
返回值
_lseek 返回偏移量,在字节,新位置与最初文件。 _lseeki64 返回在 64 位整数的偏移量。 函数返回 – 1L 指示错误。 如果通过一个无效参数,如一个坏文件描述符或 原点的 值无效或 偏移所 指定的该位置是在文件开头之前,无效参数调用处理程序,如 参数验证所述。 如果执行允许继续,对 EBADF 的这些功能集 errno 和返回 -1L。 在计算机上无法胜任查找 (例如位置和打印机),返回值是不确定的。
有关这些属性和其他错误代码的更多信息,请参见 _doserrno、 errno、 _sys_errlist 和 _sys_nerr。
备注
_lseek 功能将文件指针与 fd 从原点 的 偏移 量字节的新位置。 在文件中的下一个操作在新位置出现。 原点 参数必须是下列常量之一,在 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