【C语言】【unix c】lseek(2)重新定位文件的读写位置的使用

110 篇文章 1 订阅
一、lseek(2)重新定位文件的读写位置的使用

    #include <sys/types.h>
    #include <unistd.h>
    off_t lseek(int fd, off_t offset, int whence);
        功能:重新定位文件读写位置距离文件起始的偏移
        参数:
            fd:指定了具体的文件
            offset:偏移量
            whence:
                SEEK_SET:offset就是文件的偏移位置(以头为基准)
                SEEK_CUR:当前位置加上offset(以当前位置为基准)
                SEEK_END:文件的大小加上offset 文件的尾部(以尾部为基准)
        返回值:
            -1 错误 errno被设置
            正确 返回的是距离文件开始的位置

    ***************************************************************
    举例:lseek.c
        #include <stdio.h>
        #include <p_file.h>
    程序:
        int main(int argc, char *argv[]) {
            int fd;
            char buf[24]; //读取到的需要先存在一个地方
            fd = open(argv[1], O_RDONLY); //不用新建文件,所以不用写第三个参数
            if(fd == -1) {
            perror("open");
            return -1;
            }
            lseek(fd, 3,SEEK_SET); //以头为基准,向后偏移3个字节
            int r = read(fd, buf, 2);
            write(1, buf, r);//
            printf("\n");
            close(fd);
            return 0;
        }

    命令: tarena@ubuntu:~/day/day28$ a.out hello 
    结果: lo

    补充:
        tarena@ubuntu:~/day/day28$ od -tx1 -tc hello
        (文件起始位置)0000000  68  65  6c  6c  6f  0a     //ASIIC码
                      h   e   l   l   o  \n     //字符
        (文件结束位置)0000006
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘星燎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值