Linux文件光标移动操作

需调用函数:
off_t lseek(int fd, off_t offset, int whence);

需调用头文件:
#include <sys/types.h>
#include <unistd.h>

在此函数第三个参数中SEEK_SET,将光标返回文件头
SEEK_END将光标指向文件尾,SEEK_CUR将光标指向当前位置。

第二个参数,即移动的字节,经代码调制后可知,第二个参数正常情况下向后移动字节,若想向前移动字节,需要加上负号。
代码展示:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
int main()
{
        int fd;
        char *buf = "qybs hen shuai!";
        fd = open("./file1",O_RDWR);

        if(fd == -1){
 				printf("open failed\n");
                fd = open("./file1",O_RDWR|O_CREAT,0600);
                if(fd > 0){
                        printf("creat succeed\n");
                }
        }
        
        printf("creat succeed! fd = %d\n",fd);
        
        int n_write = write(fd, buf,strlen(buf));

        if(n_write != -1){
                printf("write %d byte to file\n",n_write);
        }



        char *readBuf;

        readBuf = (char *)malloc(sizeof(char)*n_write + 1);
        lseek(fd, -15,SEEK_CUR);

        int n_read = read(fd,readBuf,n_write);
        
        printf("read:%d,context:%s\n",n_read,readBuf);
        
        close(fd);

        return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值