文件编程-------------通过偏移指针(lseek)设置固定大小的文件

1、操作:通过lseek设置一个固定大小的文件:
2、思路:创建一个文件,偏移指针指向你想要大小的那个位置,至少理论上是行得通的,是可以开辟一个这么大的文件的!
这时候你需要想到的是:当你的程序运行结束的时候偏移指针随着程序的结束而消失,而往文件里面写入东西是不会随着程序的结束而结束的,所以想到在想要大小的那个位置卡一个字母,也就是在那个位置先偏移指针指向他然后再写入一个字母,这样一个固定大小的文件就设置完成了;

3、涉及的偏移指针lseek:
(1)、lseek系统调用可以改变文件偏移量(File Offset),文件偏移量是一个整数,表示距文件起始处的字节数。
(2)、格式:

#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fildes, off_t offset, int whence);

其中,参数whence必需是以下三个常量之一:
SEEK_SET:将文件偏移量设置在距文件开始处offset个字节。
SEEK_CUR:将文件偏移量设置在其当前值加offset,offset可正可负。
SEEK_END:将文件偏移量设置为文件长度加offset,offset可正可负。
int fildes :是你需要创建的并且打开的文件,用文件描述符代替。
off_t offset:表示偏移量的大小,也就是取决于你要设置的文件大小。
我觉得从开头开始卡距离比较方便,int whence用SEEK_SET。

4、代码实现:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

#define SIZE 1024

int main()
{
    int fd = open("big", O_RDWR|O_CREAT, 0777);
    if(fd == -1)
    {
        perror("open fd");
        return -1;
    }

    // 设置一个文件偏移指向1g处,卡住他;
    lseek (fd, 1024*1024*1024, SEEK_SET);

    char buf[SIZE] = "hello";
    write(fd,buf,1);

    close(fd);

    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值