大家好,又见面了,我是你们的朋友全栈君。
//标准C库函数
#include <stdio.h>
int fseek(FILE *stream, long offset, int whence);
//linux系统函数
#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);
参数:
-fd:文件描述符
-offset:偏移量
-whence:
SEEK_SET
设置文件指针的偏移量,为文件起始地址
SEEK_CUR
设置文件指针的偏移量,为当前位置+第2个参数offset的值
SEEK_END
设置文件指针的偏移量,为文件大小+第2个参数offset的值
返回值:返回文件指针的位置
作用:
1.移动文件指针到文件头: lseek(fd, 0, SEEK_SET);
2.获取当前文件指针的位置: lseek(fd, 0, SEEK_CUR);
3.获取文件长度: lseek(fd, 0, SEEK_END);
4.拓展文件的长度,如增加100字节: lseek(fd, 100, SEEK_END);
注意:拓展文件后需要写一次数据
例子:
//perror
#include <stdio.h>
//open
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
//lseek/write
#include <unistd.h>
int main()
{
int fd=open("hello.txt", O_RDWR);
if(fd==-1)
{
perror("open");
return -1;
}
int ret=lseek(fd,100,SEEK_END);
if(ret==-1)
{
perror("lseek");
return -1;
}
//写入一个空格
write(fd," ",1);
close(fd);
return 0;
}
参考:牛客网 C++高薪求职项目《Linux高并发服务器开发》1.23 lseek函数
专属优惠链接:
https://www.nowcoder.com/courses/cover/live/504?coupon=AvTPnSG
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/149455.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...