seek函数(linux lseek函数怎么用)

:暂无数据 2026-04-21 03:40:03 0
其实seek函数的问题并不复杂,但是又很多的朋友都不太了解linux lseek函数怎么用,因此呢,今天小编就来为大家分享seek函数的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

linux lseek函数怎么用

Linux的lseek函数用来控制一个打开的文件的读写位置,它的函数原型如下:
off_t lseek(int fildes,off_t offset ,int whence);
参数的用法:fildes参数为一个已打开的文件描述符;参数offset为读写位置的位移数,这个位移数是根据参数whence来确定的;whence参数分为下列三种:
SEEK_SET:表示offset用来直接设置读写位置。
SEEK_CUR:表示以目前的读写位置往后增加offset个位移量。
SEEK_END:表示将读写位置指向文件尾后再增加offset个位移量。
当whence值为SEEK_CUR或SEEK_END时,参数offet允许负值出现。当lseek调用成功时返回目前的读写位置,也就是距离文件开头多少个字节。若有错误则返回-1,errno会存放错误代码。下面是几个使用示例:
将读写位置移到文件开头:lseek(myfile, 0, SEEK_SET);
将读写位置移到文件尾:lseek(myfile, 0, SEEK_END);
想要取得目前文件位置:off_t cur=lseek(myfile, 0, SEEK_CUR);
注意:使用lseek函数需要包含以下头文件:
#include 《sys/types.h》
#include 《unistd.h》

请教一下,QT 中读取文件时,有没有倒着读取的比如我想读取文件后100*100个数据,C/c++的seek函数就可以

QT的QIOdevice,QTextStream等也有seek函数,你可以调用它以实现你所需的功能。
QFile file("/home/hamad/lesson11.txt");
if(!file.open(QIODevice::ReadOnly)){
QMessageBox::information(0,"error", file.errorString());
}
QTextStream in(&file);
//in.pos(); //返回当前文件指针位置
in.seek(POS)//POS为你要跳转到的位置,这里最好接收下返回值,以便出错处理
while(!in.atEnd()){
QString line =in.readLine();
QStringList fields = line.split(",");
model-》appendRow(fields);
}
file.close();

c语言中fseek函数怎样指到文件末尾

fseek有三个参数,第1个是文件句柄,通过打开文件时得到;第2个就是移动的字节数,这个数可以是正的,就是向后(文件尾部)移动,也可以是负的,即向前(文件头部)移动;第3个参数指明从哪里移动,如果写SEEK_SET就是从文件头部移动多少字节,如果

seek函数用法python

参数offset--开始的偏移量,也就是代表需要移动偏移的字节数whence:可选,默认值为0。
给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
file.seek(off,whence=0):从文件中移动off个操作标记(文件指针),正往结束方向移动,负往开始方向移动。
如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。

用C语言实现文件读写操作(4)

用C语言实现文件读写操作

  二、直接I/O文件操作

  这是C提供的另一种文件操作,它是通过直接存/取文件来完成对文件的处理,而上篇所说流式文件操作是通过缓冲区来进行;流式文件操作是围绕一个 FILE指针来进行,而此类文件操作是围绕一个文件的“句柄”来进行,什么是句柄呢?它是一个整数,是系统用来标识一个文件(在WINDOWS中,句柄的概念扩展到所有设备资源的标识)的唯一的记号。此类文件操作常用的函数如下表,这些函数及其所用的一些符号在io.h和fcntl.h中定义,在使用时要加入相应的头文件。

  函数 说明

  open() 打开一个文件并返回它的句柄

  close() 关闭一个句柄

  lseek() 定位到文件的指定位置

  read() 块读文件

  write() 块写文件

  eof() 测试文件是否结束

  filelength() 取得文件长度

  rename() 重命名文件

  chsize() 改变文件长度

  下面就对这些函数一一说明:

  1.open()

  打开一个文件并返回它的句柄,如果失败,将返回一个小于0的值,原型是int open(c***t char *path, int access ); 参数path是要打开的文件名,access是打开的模式,mode是可选项。表示文件的属性,主要用于UNIX系统中,在DOS/WINDOWS这个参数没有意义。其中文件的打开模式如下表。

  符号 含义 符号 含义 符号 含义

  O_RDONLY 只读方式 O_WRONLY 只写方式 O_RDWR 读/写方式

  O_NDELAY 用于UNIX系统 O_APPEND 追加方式 O_CREAT 如果文件不存在就创建

  O_TRUNC 把文件长度截为0 O_EXCL 和O_CREAT连用,如果文件存在返回错误 O_BINARY 二进制方式

  O_TEXT 文本方式

  对于多个要求,可以用"|"运算符来连接,如O_APPEND|O_TEXT表示以文本模式和追加方式打开文件。

  例:int handle=open("c:\\msdos.sys",O_BINARY|O_CREAT|O_WRITE)

  2.close()

  关闭一个句柄,原型是int close(int handle);如果成功返回0

  例:close(handle)

  3.lseek()

  定位到指定的位置,原型是:long lseek(int handle, long offset, int fromwhere);参数offset是移动的量,fromwhere是移动的基准位置,取值和前面讲的fseek()一样,SEEK_SET:文件首部;SEEK_CUR:文件当前位置;SEEK_END:文件尾。此函数返回执行后文件新的存取位置。

  例:

  lseek(handle,-1234L,SEEK_CUR);//把存取位置从当前位置向前移动1234个字节。

  x=lseek(hnd1,0L,SEEK_END);//把存取位置移动到文件尾,x=文件尾的位置即文件长度

  4.read()

  从文件读取一块,原型是int read(int handle, void *buf, unsigned len);参数buf保存读出的数据,len是读取的字节。函数返回实际读出的字节。

  例:char x;read(hnd1,x,200);

  5.write()

  写一块数据到文件中,原型是int write(int handle, void *buf, unsigned len);参数的含义同read(),返回实际写入的字节。

  例:char x="I Love You";write(handle,x,strlen(x));

  7.eof()

  类似feof(),测试文件是否结束,是返回1,否则返回0;原型是:int eof(int handle);

  例:while(!eof(handle1)){……};

  8.filelength()

  返回文件长度,原型是long filelength(int handle);相当于lseek(handle,0L,SEEK_END)

  例:long x=filelength(handle);

  9.rename()

  重命名文件,原型是int rename(c***t char *oldname, c***t char *newname); 参数oldname是旧文件名,newname是新文件名。成功返回0

  例:rename("c:\\config.sys","c:\\config.w40");

  10.chsize();

  改变文件长度,原型是int chsize(int handle, long size);参数size表示文件新的长度,成功返回0,否则返回-1,如果指定的长度小于文件长度,则文件被截短;如果指定的长度大于文件长度,则在文件后面补’’\0’’。

  例:chsize(handle,0x12345);

;

问一个关于lseek函数的效率问题

lseek是库函数。
库函数就是C++最基本的函数,也就是说没有这些东西无法定义C++。
C++的制定标准,并不决定库函数的底层是如何实现的,主要决定实现结果和大致逻辑。
所以,对于不同系统不同型号机器的lseek,它的实现是不一样的。
在大多数系统中,lssek的执行只是改变一个内存中的值。计算机读取磁盘很慢,而内存很快,于是操作系统在内存中会事先保存好多值,当下一个读盘周期开始的时候,计算机会以最优化的读取顺序读取内存中设置的磁盘位置,lssek改变的就是那个位置。
所以耗时依赖你的系统和硬件,10000 比100未必慢

c语言 怎么样把一个三维数组写入一个txt的文件然后读入另一个三维数组里

现在是你在写程序 ,具体的写入顺序是由你自己定义的,你想怎么写就怎么写!但是 就读写来说:

C 语言的读写文件函数里面是一个读写指针,如果是需要写完之后去读的话 需要移动文件读写指针到文件开头才能正常读写。

下面是几个有用的函数(百科都有的)

***隐藏网址***

重定位流(数据流/文件)上的文件内部位置指针
注意:不是定位文件指针,文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变指向别的文件。
本段用 法
int fseek(FILE *stream, long offset, int fromwhere);
本段描 述
函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
fseek函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型。
***隐藏网址***
函数fopen
函数简介
函数功能:打开一个文件
函数原型:FILE * fopen(c***t char * path,c***t char * mode);
相关函数:open,fclose,fopen_s,_wfopen
所需库:《stdio.h》
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。
一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。

***隐藏网址***
fwrite
本段功能
C语言函数,向文件写入一个数据块
本段用法
size_t fwrite(c***t void* buffer, size_t size, size_t count,
FILE* stream);
注意:这个函数以二进制形式对文件进行操作,不局限于文本文件
返回值:返回实际写入的数据块数目
(1)buffer:是一个指针,对fwrite来说,是要输出数据的地址;
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的数据项的个数;
(4)stream:目标文件指针;
(5)返回实际写入的数据项个数count。
说明:写入到文件的哪里? 这个与文件的打开模式有关,如果是w+,则是从file
pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。
fseek对此函数有作用,但是fwrite函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE
*fp)函数同步。

c++中的seekg函数

seekg()是对输入流的操作g是get缩写

输入流类的成员函数的名字seekg由两部分组成。首先是seek(寻找)到文件中的某个地方,其次是"g"表示"get",指示函数在输入流上工作,因为要从输入流获取数据。

要查找的文件中的新位置由两个形参给出:新位置将从由place给出的起始位置开始,偏移offset个字节。offset形参是一个long类型的整数,而place可以是ios类中定义的3个值之一。

起始位置可能是文件的开头、文件的当前位置或文件的末尾,这些地方分别由常量ios::beg、ios::cur和ios::end表示。

扩展资料

seekg函数的使用

#include《iostream》

#include《fstream》

usingnamespacestd;

intmain()

{

//Variablesneededtoreadorwritefileonecharacteratatimecharch;

fstreamioFile("rewind.txt",ios::out);

//Openfile.

if(!ioFile)

{

cout《《"Errorintryingtocreatefile";

return0;

}

//Writetofileandclose

ioFile《《"Allgooddogs"《《endl《《"growl,bark,andeat."《《endl;

ioFile.close();

//Openthefile

ioFile.open("rewind.txt",ios::in);

if(!ioFile)

{

cout《《"Errorintryingtoopenfile";

return0;

}

//Readthefileandechotoscreen

ioFile.get(ch);

while(!ioFile.fail())

{

cout.put(ch);

ioFile.get(ch);

}

//Rewindthefile

ioFile.clear();

ioFile.seekg(0,ios::beg);

//Readfileagainandechotoscreen

ioFile.get(ch);

while(!ioFile.fail())

{

cout.put(ch);

ioFile.get(ch);

}

return0;

}

为什么C语言中read函数和write函数间要用lseek来调整读取顺序

-由于程序在打开文件时文件操作指针位于文件起始位置,即偏移量0
-读取了1个字符的内容给变量c,文件指针偏移量为1
-这时如果想将c值写到文件开始位置,则需要移动文件指针到文件开始
-于是lseek就是移动文件当前指针的语句,它通知系统将文件指针移动到从文件开始位置(SEEK_SER)起的第0字节
-这个程序比较奇怪,明明打开文件时选用了0_WRONLY参数,表明这个打开是只写的,但上来就读

Python文件读取中:f.seek(0)和f.seek(0,0)有什么区别

seek(0)和f.seek(0,0)是没有区别的。

file.seek()方法标准格式是:seek(offset,whence=0)offset:开始的偏移量,也就是代表需要移动偏移的字节数whence:给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。默认为0

whence 的默认参数是0。

whence 还有两种情况 是1,或者2:

1的时候,相对当前坐标的移动,可以是正的也可以是负的。

2的时候相对于文件结束的移动,通常应该是负的。

扩展资料

python 文件读写操作:

读文件

打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的):

》》》 f = open(’test.txt’, ’r’)

r表示是文本文件,rb是二进制文件。(这个mode参数默认值就是r)

如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在:

》》》 f=open(’test.txt’, ’r’)
Traceback (most recent call last):
File "《stdin》", line 1, in 《module》
FileNotFoundError: No such file or directory: ’test.txt’

文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的

》》》 f.close()

由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。

seek函数linux lseek函数怎么用的探讨至此告一段落,希望对你有所启发。
本文编辑:admin

本文相关文章:


c语言sort函数从小到大排序(c语言:编写一个函数名字为sort,完成对三个整数从小到大排序,要求用指针实现)

c语言sort函数从小到大排序(c语言:编写一个函数名字为sort,完成对三个整数从小到大排序,要求用指针实现)

当大家谈论c语言sort函数从小到大排序时,总免不了提及c语言:编写一个函数名字为sort,完成对三个整数从小到大排序,要求用指针实现。它们之间究竟有何玄机?读完本文你便了然于胸。

2026年4月20日 18:40

常用15个excel函数公式活学活用(excel中最常用的30个函数)

常用15个excel函数公式活学活用(excel中最常用的30个函数)

想快速搞懂常用15个excel函数公式活学活用吗?本文将围绕excel中最常用的30个函数等核心问题,用最直白的语言为您提供一份实用指南,帮您节省大量摸索的时间。

2026年4月19日 16:00

strstr忽略大小写(C++问题:请问如何让 strstr()函数忽略大小写尽量优化运行时间)

strstr忽略大小写(C++问题:请问如何让 strstr()函数忽略大小写尽量优化运行时间)

本文旨在解决您关于strstr忽略大小写的两大困惑:一是理清基本概念,二是深入解析C++问题:请问如何让 strstr()函数忽略大小写尽量优化运行时间。内容干练,直奔主题。

2026年4月17日 07:20

wavwrite函数(百度matlab有什么函数可以自己命名后保存wav音频文件注意!!!)

wavwrite函数(百度matlab有什么函数可以自己命名后保存wav音频文件注意!!!)

本文是您理解wavwrite函数的最后一站。我们将通过剖析百度matlab有什么函数可以自己命名后保存wav音频文件注意!!!,帮你打通任督二脉,彻底领悟。

2026年4月17日 04:20

lookupmid函数的使用方法(关于EXCEL的函数,VLOOKUP与MID怎么复合使用)

lookupmid函数的使用方法(关于EXCEL的函数,VLOOKUP与MID怎么复合使用)

lookupmid函数的使用方法和关于EXCEL的函数,VLOOKUP与MID怎么复合使用,看似独立,实则血脉相连。它们是如何相互影响的?本文将为你层层剖析。

2026年4月16日 19:40

countif函数使用注意事项(excel中的countif函数怎么用)

countif函数使用注意事项(excel中的countif函数怎么用)

有没有觉得countif函数使用注意事项听起来很高深?别怕,今天我们就把它和excel中的countif函数怎么用一起,拆解成易懂的小知识点。

2026年4月16日 08:20

字符串型怎么转化为数字类型(在EXCEL中有什么函数可以把字符型转成数字型)

字符串型怎么转化为数字类型(在EXCEL中有什么函数可以把字符型转成数字型)

在了解字符串型怎么转化为数字类型的过程中,您是否也曾对在EXCEL中有什么函数可以把字符型转成数字型感到困惑?别担心,接下来我将结合常见场景,带您一步步理清其中的关键点。

2026年4月15日 15:40

导函数的15个公式(导函数的基本公式是什么)

导函数的15个公式(导函数的基本公式是什么)

关注本号的朋友都知道,我们一直在持续输出关于导函数的15个公式的干货。今天,我们就聚焦到大家反复问到的导函数的基本公式是什么上。

2026年4月13日 04:40

构造函数的作用c(c++类中,默认构造函数究竟有什么作用为何声明对象后就要自动调用它这有何意义)

构造函数的作用c(c++类中,默认构造函数究竟有什么作用为何声明对象后就要自动调用它这有何意义)

想知道那些精通构造函数的作用c的人,是如何看待c++类中,默认构造函数究竟有什么作用为何声明对象后就要自动调用它这有何意义的吗?本篇将为你揭秘他们的思考路径。

2026年4月12日 10:40

stl vector用法(C++中STL的vector容器的析构函数怎么用)

stl vector用法(C++中STL的vector容器的析构函数怎么用)

想知道那些精通stl vector用法的人,是如何看待C++中STL的vector容器的析构函数怎么用的吗?本篇将为你揭秘他们的思考路径。

2026年4月12日 08:20

更多文章:


split软件怎么用(苹果splitapp怎么使用)

split软件怎么用(苹果splitapp怎么使用)

承接之前对split软件怎么用的讨论,本篇我们将视角下沉,专门来聊聊实操中无法回避的苹果splitapp怎么使用问题,让知识落地。

2026年4月21日 05:00

颜色大全有多少种(颜色有多少种)

颜色大全有多少种(颜色有多少种)

很多朋友初次接触颜色大全有多少种可能会觉得有点陌生,这很正常。今天这篇文章,咱们就一起把颜色有多少种这事儿聊透,希望能帮您理清思路。

2026年4月21日 04:40

****marker循环(****marker生成复杂word时,用循环循环不出来<w:p>标签)

****marker循环(****marker生成复杂word时,用循环循环不出来<w:p>标签)

上一篇文章我们介绍了****marker循环的基础,今天我们将深入其核心环节——****marker生成复杂word时,用循环循环不出来标签,看看它如何承前启后。

2026年4月21日 04:20

hibernate实例教程(Hibernate的多对一和一对多操作实例)

hibernate实例教程(Hibernate的多对一和一对多操作实例)

本篇内容旨在成为您理解hibernate实例教程的实用手册,其中Hibernate的多对一和一对多操作实例将是我们要重点打磨的章节。

2026年4月21日 04:00

seek函数(linux lseek函数怎么用)

seek函数(linux lseek函数怎么用)

其实seek函数的问题并不复杂,但是又很多的朋友都不太了解linux lseek函数怎么用,因此呢,今天小编就来为大家分享seek函数的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年4月21日 03:40

this怎么读的英文(一直想问下this这个到底怎么发音啊)

this怎么读的英文(一直想问下this这个到底怎么发音啊)

本文旨在解决您关于this怎么读的英文的两大困惑:一是理清基本概念,二是深入解析一直想问下this这个到底怎么发音啊。内容干练,直奔主题。

2026年4月21日 03:20

echarts立体柱状图(在vue项目中使用echarts制作3d柱状图)

echarts立体柱状图(在vue项目中使用echarts制作3d柱状图)

本文是您理解echarts立体柱状图的最后一站。我们将通过剖析在vue项目中使用echarts制作3d柱状图,帮你打通任督二脉,彻底领悟。

2026年4月21日 03:00

json软件(iosjson中文被转义)

json软件(iosjson中文被转义)

大家好,关于json软件很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于iosjson中文被转义的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年4月21日 02:40

企业网站名称及网站简介(名城苏州的网介)

企业网站名称及网站简介(名城苏州的网介)

本文旨在解决您关于企业网站名称及网站简介的两大困惑:一是理清基本概念,二是深入解析名城苏州的网介。内容干练,直奔主题。

2026年4月21日 02:20

日期字符串是什么(sql中取日期的字符串是)

日期字符串是什么(sql中取日期的字符串是)

结合最近的趋势来看,日期字符串是什么的热度持续攀升,而sql中取日期的字符串是作为其核心组成部分,讨论度更是居高不下。

2026年4月21日 02:00

最近更新

颜色大全有多少种(颜色有多少种)
2026-04-21 04:40:03 浏览:0
****marker循环(****marker生成复杂word时,用循环循环不出来<w:p>标签)
2026-04-21 04:20:03 浏览:0
seek函数(linux lseek函数怎么用)
2026-04-21 03:40:03 浏览:0
json软件(iosjson中文被转义)
2026-04-21 02:40:02 浏览:0
热门文章

order by执行顺序(sql里 where和order by一起使用是怎样的顺序)
2026-03-28 04:40:01 浏览:0
go slice(Golang|切片原理)
2026-03-27 07:20:01 浏览:0
canvas音标(SIZE是什么意思)
2026-03-27 23:20:01 浏览:0
floatleft是什么意思(displayflex和floatleft的区别)
2026-04-17 04:40:03 浏览:0
360度网站模板(什么叫360评估)
2026-03-27 18:00:01 浏览:0
plsql连接oracle19c客户端(PL**L连接ORACLE需要配置些什么东西总是不能选择数据库)
2026-03-27 12:40:01 浏览:0
标签列表