1.23 lseek函数

1.23 lseek函数参考:牛客网C++高薪求职项目《Linux高并发服务器开发》1.22read、write函数专属优惠链接:https://www.nowcoder.com/courses/cover/live/504?coupon=AvTPnSG

大家好,又见面了,我是你们的朋友全栈君。

 

1.23 lseek函数

//标准C库函数
#include <stdio.h>
int fseek(FILE *stream, long offset, int whence);


//linux系统函数
#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);

    参数:
        -fd:文件描述符
        -offset:偏移量
        -whence:
            SEEK_SET
                设置文件指针的偏移量,为文件起始地址
            SEEK_CUR
                设置文件指针的偏移量,为当前位置+第2个参数offset的值
            SEEK_END
                设置文件指针的偏移量,为文件大小+第2个参数offset的值
    返回值:返回文件指针的位置

作用:
    1.移动文件指针到文件头:               lseek(fd, 0, SEEK_SET);
    2.获取当前文件指针的位置:             lseek(fd, 0, SEEK_CUR);
    3.获取文件长度:                      lseek(fd, 0, SEEK_END);
    4.拓展文件的长度,如增加100字节:       lseek(fd, 100, SEEK_END);
     注意:拓展文件后需要写一次数据

例子:

//perror
#include <stdio.h>
//open
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

//lseek/write
#include <unistd.h>

int main()
{
    int fd=open("hello.txt", O_RDWR);
    if(fd==-1)
    {
        perror("open");
        return -1;
    }

    int ret=lseek(fd,100,SEEK_END);
    if(ret==-1)
    {
        perror("lseek");
        return -1;
    }
    //写入一个空格
    write(fd," ",1);

    close(fd);
    return 0;

}

1.23 lseek函数


参考:牛客网 C++高薪求职项目《Linux高并发服务器开发》1.23 lseek函数

专属优惠链接:

https://www.nowcoder.com/courses/cover/live/504?coupon=AvTPnSG

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149456.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux怎么查看软件安装路径 查看mysql安装在哪

    Linux怎么查看软件安装路径 查看mysql安装在哪

    2021年10月14日
    52
  • UE4 slate_ue4渲染动画

    UE4 slate_ue4渲染动画原创文章,转载请注明出处。点击观看下一篇《UE4Slate二用UMG思想去理解Slate》这里写目录标题前言Slate是什么?为什么要了解Slate?提前需要了解的模块(将对Slate学习很有帮助)前言Slate相关文章,使用引擎版本4.25.4源码版.一共11篇文章。网上Slate的文章介绍很少,所以在这里做一下该部分的文章并记录一下。同时也希望能帮助到大家。Slate是什么?一套GUI架构,它是虚幻引擎的UI架构。我们打开编辑器看到的界面,可以说95%以上(高概猜测数值,甚至100.

    2022年10月4日
    5
  • 静态代理和动态代理详解[通俗易懂]

    静态代理和动态代理详解[通俗易懂]1代理生活中的代理:比如我们生活中比较熟悉的代购、中介、商家等都是属于代理2什么是代理模式代理模式是指:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户类和目标对象之间起到中介的作用。换句话说,使用代理对象,是为了在不修改目标对象的基础上,增强主业务逻辑。客户类真正想要访问的对象是目标对象,但客户类真正可以访问的对象是代理对象。客户类对目标对象的访问是通过访问代理对象来实现的。当然,代理类与目标类要实现同一个接.

    2022年10月10日
    3
  • JVM常量池和运行时常量池「建议收藏」

    JVM常量池和运行时常量池「建议收藏」一、类的二进制字节码包含哪些信息要理解常量池是什么,先看看类的二进制字节码包含哪些信息!!!常量池类的基本信息(比如:类的访问权限、类的名称、实现了哪些接口)类的方法定义(包含了虚拟机指令,也就是把我们代码编译为了虚拟机指令)二、通过反编译字节码验证1、测试代码将下面的测试代码使用javac编译为*.class文件publicclassHelloWorld{publicstaticvoidmain(String[]args){System

    2025年10月10日
    1
  • Idea激活码最新教程2024.3.2.2版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2024.3.2.2版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2024 3 2 2 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2024 3 2 2 成功激活

    2025年5月31日
    4
  • redis如何设置密码及验证密码_redis设置永不过期

    redis如何设置密码及验证密码_redis设置永不过期密码设置这里简单介绍一下redis如何设置密码redis密码设置有两种方式,一种需要重启redis服务,一种不需要重启redis服务。首先,介绍一下需要重启redis服务的设置方式即找到redis的配置文件—redis.conf文件,然后修改里面的requirepass,这个本来是注释起来了的,将注释去掉,并将后面对应的字段设置成自己想要的密码,保存退出。重启redis服务,即可。我…

    2022年4月19日
    78

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号