linux系统编程之lseek函数

本文介绍了lseek函数在C语言中的应用,包括移动文件读写指针、计算文件大小以及扩展文件。示例代码分别演示了如何打开文件写入内容并读取,如何计算文件大小,以及如何在文件末尾追加数据来扩展文件。通过这些基本操作,开发者可以更好地理解和控制文件处理过程。
摘要由CSDN通过智能技术生成

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字节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值