lseek函数作用:
- 移动文件读写
- 计算文件大小
- 拓展文件
实现的功能
1、打开一个文件,写入内容:hello word ,然后读取一下该文件,输出到屏幕
#include<stdipo.h>
#include<unistd.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
int main(int argc,char *argv[])
{
if(argc!=2}
{
printf("./a.out filename\n");
exit(1);
}
int fd=open(argv[1],O_RDWR|O_CREATE,0666);
write(fd,"hello world",11);//文件指针指向末尾
//需要移动指针位置
lseek(fd,0,SEEK_SET);
char buf[256]={0};
int ret=read(fd,buf,sizeof(buf));
if(ret)
{
write(STDOUT_FILENO,buf,ret);
}
close(fd);
return 0;
}
计算文件大小
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main(int argc,char *argv[])
{
if(argc!=2)
{
printf("./a.out filename\n");
return -1;
}
//1.open
int fd=open(argv[1],O_RDONLY);
//2.lseek
int ret=lseek(fd,0,SEEK_END);
printf("file size =%d\n",ret);
//close
close(fd);
return 0;
}
扩展文件
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main(int argc,char *argv[])
{
if(argc!=2)
{
printf("./a.out filename\n");
return -1;
}
//1.open
int fd=open(argv[1],O_WDONLY|O_CREATE,0666);
//2.lseek
int ret=lseek(fd,1023,SEEK_END);
//至少写一次否则不能保存
write(fd,'a',1);
//close
close(fd);
return 0;
}
输出:文件为1024字节