C语言lseek()函数详解

 头文件:

#include <sys/types.h>

#include <unistd.h>

函数原型:

off_t lseek(int fd, off_t offset, int whence);//打开一个文件的下一次读写的开始位置

参数:

fd 表示要操作的文件描述符

offset是相对于whence(基准)的偏移量

whence 可以是SEEK_SET(文件指针开始),SEEK_CUR(文件指针当前位置) ,SEEK_END为文件指针尾

返回值:

文件读写指针距文件开头的字节大小,出错,返回-1

lsee的作用是打开文件下一次读写的开始位置,因此还有以下两个作用

1.拓展文件,不过一定要一次写的操作。迅雷等下载工具在下载文件时候先扩展一个空间,然后再下载的。

2.获取文件大小。

lseek()函数会重新定位被打开文件的位移量,根据参数offset以及whence的组合来决定:

SEEK_SET:从文件头部开始偏移offset个字节。

SEEK_CUR:从文件当前读写的指针位置开始,增加offset个字节的偏移量。

SEEK_END:文件偏移量设置为文件的大小加上偏移量字节。

获取文件大小

#include<stdio.h>

#include<stdlib.h>

#include<sys/types.h>

#include<unistd.h>

#include <sys/stat.h>

#include <fcntl.h>

void main()

{
int fd=open("test.txt",O_RDWR);

if(fd<0)

{
perror("open test.txt");

exit(-1);

}

printf("file size:%d \n",lseek(fd,0,SEEK_END));

close(fd);

}

拓展一个文件,一定要有一次写操作

#include<stdio.h>

#include<stdlib.h>

#include<sys/types.h>

#include<unistd.h>

#include <sys/stat.h>

#include <fcntl.h>

int main(void)

{
int fd=open("test.txt",O_RDWR);

if(fd<0)

{
perror("open test.txt");

exit(-1);

}

lseek(fd,0x1000,SEEK_SET);

write(fd,"a",1);

close(fd);

return 0;

}

到此这篇关于C语言lseek()函数详解的文章就介绍到这了,更多相关C语言lseek()内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • docker实现redis集群搭建的方法步骤

    目录 一.创建redis docker基础镜像 二.制作redis节点镜像 三.运行redis集群 引用: 摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群. 首先,我们需要理论知识:Redis Cluster是Redis的分布式解决方案,它解决了redis单机中心化的问题,分布式数据库--首要解决把整个数据集按照分区规则映射到多个节点的问题. 这边就需要知道分区规则--哈希分区规则.Redis Clus

  • 一篇文章告诉你如何用python进行自动化测试,调用c程序

    目录 一.介绍 二.方法 三.示例 windows平台 1.编写搭建动态库c函数 2.python导入库 3.结果 linux平台 1.编写c程序 2.编译成so动态库 3.编写python导入库 4.执行 总结 一.介绍 python可以做测试c的程序, 用到ctypes模块 ctypes 有以下优点: Python内建,不需要单独安装 可以直接调用二进制的动态链接库 在Python一侧,不需要了解Python内部的工作方式 在C/C++一侧,也不需要了解Python内部的工作方式 对基本类型

  • Android startActivityForResult的基本用法详解

    知识准备: 1.startActivityForResult(Intent intent, int requestCode):启动 Activity,同时等待该 Activity 返回数据.只有该 Activity 销毁时数据才会被返回. 参数 1:意图,封装要启动的 Activity,当然也可以携带数据 参数 2:请求码,如果是大于 0 的整数,那么该请求码会在 onActivityResult 中的 requestCode中出现,如果小于等于 0,则不会被返回. 2.onActivityRe

  • JavaScript navigator.userAgent获取浏览器信息案例讲解

    浏览器对于我们来说,可能是最熟悉的工具了.熟知的浏览器Firefox.Opera.Safari.IE.Chrome以外,据说世界上还有近百种浏览器.通常在开发的时候要做到兼容各种浏览器,因此提炼出判断浏览器类型及系统是很重要的. 先来看看什么是User-Agent?User-Agent是HTTP请求中的用户标识,一般发送一个能够代表客户端类型的字符串,比如浏览器类型 操作系统等信息.User-Agent 的约定格式是:应用名,跟一个斜线,跟版本号,剩下的是自由的格式. 此处我只实例展示几个浏览器

  • 一篇文章告诉你如何用Python控制Excel实现自动化办公

    目录 1.安装 2.操作一个简单的Excel文档 3. 操作简单Excel文档并添加数据格式 4.Excel中添加不同类型的数据 5.Excel中添加数据图表 最后:可能给予你助力的教程 总结 1.安装 2.操作一个简单的Excel文档 操作注释及代码: 操作完成后,数据存储结果如下: 3. 操作简单Excel文档并添加数据格式 操作代码如下: 附带数据格式的定义 操作效果如图所示: 4.Excel中添加不同类型的数据 操作代码如下: 将不同的数据按照指定的格式添加到文件中 代码执行结果如下:

  • C语言中lseek()函数和fseek()函数的使用详解

    C语言lseek()函数:移动文件的读写位置 头文件: #include <sys/types.h> #include <unistd.h> 定义函数: off_t lseek(int fildes, off_t offset, int whence); 函数说明: 每一个已打开的文件都有一个读写位置, 当打开文件时通常其读写位置是指向文件开头, 若是以附加的方式打开文件(如O_APPEND), 则读写位置会指向文件尾. 当read()或write()时, 读写位置会随之增加,ls

  • CSS将div内容垂直居中案例总结

    一.行高(line-height)法 如果要垂直居中的只有一行或几个文字,那它的制作最为简单,只要让文字的行高和容器的高度相同即可,比如: p { height:30px; line-height:30px; width:100px; overflow:hidden; } 这段代码可以达到让文字在段落中垂直居中的效果. 二.内边距(padding)法 另一种方法和行高法很相似,它同样适合一行或几行文字垂直居中,原理就是利用padding将内容垂直居中,比如: p { padding:20px 0

  • CPU,GPU,DPU,TPU,NPU,BPU等处理器的性能及概念

    目录 1.CPU 2.GPU 3.TPU 4.NPU 5.ASIC 6.BPU(Brain Processing Unit,大脑处理器) 7. DPU(Deep learning Processing Unit, 即深度学习处理器) 1.CPU CPU( Central Processing Unit, 中央处理器)就是机器的"大脑",也是布局谋略.发号施令.控制行动的"总司令官". CPU的结构主要包括运算器(ALU, Arithmetic and Logic U

  • C语言lseek()函数详解

     头文件: #include <sys/types.h> #include <unistd.h> 函数原型: off_t lseek(int fd, off_t offset, int whence);//打开一个文件的下一次读写的开始位置 参数: fd 表示要操作的文件描述符 offset是相对于whence(基准)的偏移量 whence 可以是SEEK_SET(文件指针开始),SEEK_CUR(文件指针当前位置) ,SEEK_END为文件指针尾 返回值: 文件读写指针距文件开头

  • 关于C语言qsort函数详解

    目录 C语言qsort函数详解 一.qsort函数是什么 二.使用qsort排序-以升序为例 1.整形数组排序 2.字符数组排序 3.字符指针数组排序 4.结构体数组排序 5.浮点型数组排序 三.使用冒泡排序思想模拟实现qsort函数 1.什么是冒泡排序 2.冒泡排序代码 3. 使用冒泡排序思想模拟实现qsort函数 C语言qsort函数详解 一.qsort函数是什么 我们可以使用  搜索库函数网址或者MSDN软件进行查找. qsort()函数:快速排序的函数  -引用stdlib.h头文件 参

  • Go语言init函数详解

    Go init函数详解 init()函数会在每个包完成初始化后自动执行,并且执行优先级比main函数高.init 函数通常被用来: 对变量进行初始化 检查/修复程序的状态 注册 运行一次计算 包的初始化 为了使用导入的包,首先必须将其初始化.初始化总是以单线程执行,并且按照包的依赖关系顺序执行.这通过Golang的运行时系统控制,如下图所示: 初始化导入的包(递归导入) 对包块中声明的变量进行计算和分配初始值 执行包中的init函数 initial.go package main import

  • C语言fillpoly函数详解

    C语言中,fillpoly函数的功能是画一个多边形,今天我们就来学习学习. C语言fillpoly函数:填充一个多边形 函数名:fillpoly 功  能:画并填充一个多边形 头文件:#include <graphics.h> 原  型:fillpoly(int numpoints, int far *polypoints); 参数说明:numpoints 为多边形的边数:far *polypoints 为存储各顶点坐标的数组,每两个一组表示一个顶点的 X 和 Y 坐标. 实例代码: #inc

  • c语言 malloc函数详解

    谈到malloc函数相信学过c语言的人都很熟悉,但是malloc底层到底做了什么又有多少人知道. 1.关于malloc相关的几个函数 关于malloc我们进入Linux man一下就会得到如下结果: 也可以这样认为(window下)原型: extern void *malloc(unsigned int num_bytes); 头文件: #include<malloc.h>或者#include<alloc.h>两者的内容是完全一样的 如果分配成功:则返回指向被分配内存空间的指针 不

  • C语言memset函数详解

    目录 一.memset函数原型: 二.使用memset函数 三.给int类型赋值为1 四.扒开内存 五.memset给变量赋值 总结 在c语言中,使用变量前,需要先对变量的值进行初始化.数组在内存中占用一片连续的存储块.而c语言提供了memset函数(头文件string.h)对数组进行组团赋值.(memset函数也能对变量赋值,但只有无聊的人才会这么做.详见下文目录五) 一.memset函数原型: void memset ( void *s , char ch, unsigned n ) 函数功

  • C语言文件操作中 fgets与fputs 函数详解

    C语言文件操作中 fgets.fputs 函数详解 先给出api fgets 语法: #include <stdio.h> char *fgets( char *str, int num, FILE *stream ); 函数fgets()从给出的文件流中读取[num - 1]个字符并且把它们转储到str(字符串)中. fgets()在到达行末时停止,在这种情况下,str(字符串)将会被一个新行符结束. 如果fgets()达到[num - 1]个字符或者遇到EOF, str(字符串)将会以nu

  • R语言学习笔记之lm函数详解

    在使用lm函数做一元线性回归时,发现lm(y~x+1)和lm(y~x)的结果是一致的,一直没找到两者之间的区别,经过大神们的讨论和测试,才发现其中的差别,测试如下: ------------------------------------------------------------- ------------------------------------------------------------- 结果可以发现,两者的结果是一样的,并无区别,但是若改为lm(y~x-1)就能看出+1和

  • R语言函数详解及实例用法

    函数是一组组合在一起以执行特定任务的语句. R 语言具有大量内置函数,用户可以创建自己的函数. 在R语言中,函数是一个对象,因此R语言解释器能够将控制传递给函数,以及函数完成动作所需的参数. 该函数依次执行其任务并将控制返回到解释器以及可以存储在其他对象中的任何结果. 函数定义 使用关键字函数创建 R 语言的函数. R 语言的函数定义的基本语法如下 function_name <- function(arg_1, arg_2, ...) { Function body } 函数组件 函数的不同部

  • C语言中随机数rand()函数详解

      在生活中很多场景下都需要产生随机数,比如抽奖,打牌,游戏等场景下就需要使用随机数.在C语言标准库函数里面有专门用来产生随机数的函数rand,它的函数原型如下: int __cdecl rand(void);   rand函数没有参数,它的返回值就是随机数.下面通过一个简单的例子来测试一下rand函数. #include <stdio.h> #include <stdlib.h> int main(int argc, char** argv) { int i; i = rand(

随机推荐