首页 > 资讯 > 经验 > lseek,关于函数lseek的用法急

lseek,关于函数lseek的用法急

来源:整理 时间:2023-08-20 03:02:57 编辑:智能门户 手机版

本文目录一览

1,关于函数lseek的用法急

lseek(int filehandle,0,SEEK_END)

关于函数lseek的用法急

2,关于lseek的用法急

思路是这样的。我想你的意思是说在文件中有两份同样的数据,一份在前面未排序,一会在后面,排序方法很简单。先移至末尾,会吧,这个简单然后利用tell函数求出文件长度(在末尾时候的偏移就是文件长度)除以2的值就是要移动去的地方,再移动到文件的中间即可
lseek(int filehandle,0,seek_end)

关于lseek的用法急

3,函数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>

函数lseek的参数太少

4,怎样用lseek函数将一个文件的内容附加到另一个文件上 问

int main() int iSrcFd = 0; int iDesFd = 0; CHAR acReadBuf[128] = int iReadBytes = 0; int iWrtBytes = 0; /* open the source file*/ iSrcFd = open("1.txt",O_RDWR | O_SYNC); if (iSrcFd < 0) return -1; } iReadBytes = read(iSrcFd, acReadBuf, 128); /* open the des file */ iDesFd = open("2.txt",O_RDWR | O_SYNC); if (iSrcFd < 0) close(iSrcFd); return -1; } lseek(iDesFd, 0, SEEK_END); iWrtBytes = write(iDesFd, acReadBuf, 128); close(iDesFd); close(iSrcFd); return 0;} lseek(iDesFd, 0, SEEK_END);就是将当前文件读写的位置移动到文件末尾
你好!难道是北邮国院的。。。仅代表个人观点,不喜勿喷,谢谢。

5,lseek函数出错

第2个参数是负的,第三个参数不能用文件开始。可以用文件尾或当前位置,但不能负得 超出文件范围。
函数名: lseek  功 能: 移动文件读/写指针  用 法: long lseek(int handle, long offset, int fromwhere);  所有打开的文件都有一个当前文件偏移量(current file offset),以下简称为 cfo。cfo 通常是一个非负整数,用于表明文件开始处到文件当前位置的字节数。读写操作通常开始于 cfo,并且使 cfo 增大,增量为读写的字节数。文件被打开时,cfo 会被初始化为 0,除非使用了 o_append 。  使用 lseek 函数可以改变文件的 cfo 。  lseek 的以下用法返回当前的偏移量:  off_t currpos;  currpos = lseek(fd, 0, seek_cur);  这个技巧也可用于判断我们是否可以改变某个文件的偏移量。如果参数 fd(文件描述符)指定的是 pipe(管道)、fifo 或者 socket,lseek 返回 -1 并且置 errno 为 espipe。  对于普通文件(regular file),cfo 是一个非负整数。但对于特殊设备,cfo 有可能是负数。因此,我们不能简单地测试 lseek 的返回值是否小于 0 来判断 lseek 成功与否,而应该测试 lseek 的返回值是否等于 -1 来判断 lseek 成功与否。  lseek 仅将 cfo 保存于内核中,不会导致任何 i/o 操作。这个 cfo 将被用于之后的读写操作。  如果 offset 比文件的当前长度更大,下一个写操作就会把文件“撑大(extend)”。这就是所谓的在文件里创造“空洞(hole)”。没有被实际写入文件的所有字节由重复的 0 表示。空洞是否占用硬盘空间是由文件系统(file system)决定的。编辑本段程序例  #include &lt;stdio.h&gt;  #include &lt;stdlib.h&gt;  #include &lt;string.h&gt;  #include &lt;unistd.h&gt;  #include &lt;sys/types.h&gt;  #include &lt;fcntl.h&gt;  int main(void)    int handle;  char msg[] = "this is a test";  char ch;  /* create a file */  handle = open("test.$$$", o_creat | o_rdwr, s_iread | s_iwrite);  /* write some data to the file */  write(handle, msg, strlen(msg));  /* seek to the begining of the file */  lseek(handle, 0l, seek_set);  /* reads chars from the file until we hit eof */  do    read(handle, &amp;ch, 1);  printf("%c", ch);  } while (!eof(handle));  close(handle);  return 0;  }

6,LSEEK这个英文什么意思

LSEEK 函数功能 函数名: lseek 功 能: 移动文件读/写指针 用 法: long lseek(int handle, long offset, int fromwhere); 程序示例 #include #include #include #include #include int main(void)
lseek   函数名: lseek   功 能: 移动文件读/写指针   用 法: long lseek(int handle, long offset, int fromwhere);   所有打开的文件都有一个当前文件偏移量(current file offset),以下简称为 cfo。cfo 通常是一个非负整数,用于表明文件开始处到文件当前位置的字节数。读写操作通常开始于 cfo,并且使 cfo 增大,增量为读写的字节数。文件被打开时,cfo 会被初始化为 0,除非使用了 O_APPEND 。   使用 lseek 函数可以改变文件的 cfo 。
lseek   函数名: lseek   功 能: 移动文件读/写指针   用 法: long lseek(int handle, long offset, int fromwhere);   所有打开的文件都有一个当前文件偏移量(current file offset),以下简称为 cfo。cfo 通常是一个非负整数,用于表明文件开始处到文件当前位置的字节数。读写操作通常开始于 cfo,并且使 cfo 增大,增量为读写的字节数。文件被打开时,cfo 会被初始化为 0,除非使用了 O_APPEND 。   使用 lseek 函数可以改变文件的 cfo 。   lseek 的以下用法返回当前的偏移量:   off_t currpos;   currpos = lseek(fd, 0, SEEK_CUR);   这个技巧也可用于判断我们是否可以改变某个文件的偏移量。如果参数 fd(文件描述符)指定的是 pipe(管道)、FIFO 或者 socket,lseek 返回 -1 并且置 errno 为 ESPIPE。   对于普通文件(regular file),cfo 是一个非负整数。但对于特殊设备,cfo 有可能是负数。因此,我们不能简单地测试 lseek 的返回值是否小于 0 来判断 lseek 成功与否,而应该测试 lseek 的返回值是否等于 -1 来判断 lseek 成功与否。   lseek 仅将 cfo 保存于内核中,不会导致任何 I/O 操作。这个 cfo 将被用于之后的读写操作。   如果 offset 比文件的当前长度更大,下一个写操作就会把文件“撑大(extend)”。这就是所谓的在文件里创造“空洞(hole)”。没有被实际写入文件的所有字节由重复的 0 表示。空洞是否占用硬盘空间是由文件系统(file system)决定的。   程序例:   #include   #include   #include   #include   #include   int main(void)   {   int handle;   char msg[] = "This is a test";   char ch;   /* create a file */   handle = open("TEST.$$$", O_CREAT | O_RDWR, S_IREAD | S_IWRITE);   /* write some data to the file */   write(handle, msg, strlen(msg));   /* seek to the begining of the file */   lseek(handle, 0L, SEEK_SET);   /* reads chars from the file until we hit EOF */   do   {   read(handle, &amp;ch, 1);   printf("%c", ch);   } while (!eof(handle));   close(handle);   return 0;   } 编辑本段Linux C  lseek(移动文件的读写位置)   相关函数   dup,open,fseek   表头文件   #include<sys/types.h>   #include<unistd.h>   定义函数   off_t lseek(int fildes,off_t offset ,int whence);   函数说明   每一个已打开的文件都有一个读写位置,当打开文件时通常其读写位置是指向文件开头,若是以附加的方式打开文件(如O_APPEND),则读写位置会指向文件尾。当read()或write()时,读写位置会随之增加,lseek()便是用来控制该文件的读写位置。参数fildes 为已打开的文件描述词,参数offset 为根据参数whence来移动读写位置的位移数。   Offset:偏移量,每一读写操作所需要移动的距离,单位是字节的数量,可正可负(向前移,向后移)。   参数   whence为下列其中一种:(SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2).   SEEK_SET 将读写位置指向文件头后再增加offset个位移量。   SEEK_CUR 以目前的读写位置往后增加offset个位移量。   SEEK_END 将读写位置指向文件尾后再增加offset个位移量。   当whence 值为SEEK_CUR 或SEEK_END时,参数offet允许负值的出现。   下列是教特别的使用方式:   1) 欲将读写位置移到文件开头时:   lseek(int fildes,0,SEEK_SET);   2) 欲将读写位置移到文件尾时:   lseek(int fildes,0,SEEK_END);   3) 想要取得目前文件位置时:   lseek(int fildes,0,SEEK_CUR);   返回值   当调用成功时则返回目前的读写位置,也就是距离文件开头多少个字节。若有错误则返回-1,errno 会存放错误代码。   附加说明   Linux系统不允许lseek()对tty装置作用,此项动作会令lseek()返回ESPIPE。
文章TAG:lseek关于函数lseek的用法急

最近更新

  • 慕尼黑上海电子展,2017年慕尼黑上海电子展的详细时间地址是什么呀慕尼黑上海电子展,2017年慕尼黑上海电子展的详细时间地址是什么呀

    2017年慕尼黑上海电子展的详细时间地址是什么呀2,慕尼黑上海电子展和中国电子展哪个展会比较好3,今年的上海慕尼黑电子展有啥值得一看的厂商么4,慕尼黑上海电子展今年是第几届了往届的反.....

    经验 日期:2023-08-20

  • 回收装置,尾矿回收装置由什么组成回收装置,尾矿回收装置由什么组成

    尾矿回收装置由什么组成2,哪种细砂回收装置更实用3,热回收系统和装置4,凝结水回收装置开式系统和闭式系统的区别5,SF6气体回收装置是什么6,蒸汽冷凝水回收装置的详细介绍1,尾矿回收装置由什.....

    经验 日期:2023-08-20

  • ni软件,NI是什麽软件ni软件,NI是什麽软件

    NI是什麽软件2,ni软件怎么彻底卸载急切3,ni是什么软件4,ni是什么软件5,ni是什么软件1,NI是什麽软件软件和硬件集成--NI的工具可以轻而易举地将各种类型的软件和硬件集成在一起应用,以便满足.....

    经验 日期:2023-08-20

  • 公子小白机器人重置公子小白机器人重置

    公子小白机器人倒闭了吗?没有现在网上,公子小白机器人很受欢迎。最近买了a机器人-3小白在电视上看到-3小白-2/,但都是虚拟的,如果是实物的话,公子小白机器人还不错,像科技发达的kt02,聊天也没.....

    经验 日期:2023-08-20

  • 串联和并联,串联和并联知识点串联和并联,串联和并联知识点

    串联和并联知识点2,串联和并联3,什么是串联什么是并联4,什么事并联和串联5,什么是串联和并联6,如何理解串联与并联1,串联和并联知识点串联与并联是电路连接的两种形式。所谓串联是指只有一条.....

    经验 日期:2023-08-20

  • 集成电路芯片,集成电路和芯片怎么分别的集成电路芯片,集成电路和芯片怎么分别的

    集成电路和芯片怎么分别的2,集成电路和芯片的关系3,芯片和集成电路有什么区别4,什么叫集成电路芯片5,常见的集成电路芯片有哪些6,芯片和集成电路是两个完全等同的概念吗1,集成电路和芯片怎么.....

    经验 日期:2023-08-20

  • 自制机器人头盔,QQ怎么自制机器人自制机器人头盔,QQ怎么自制机器人

    自主智能机器人简介自主机器人自主行动。小号手头盔的内部一般认为是具有人体解剖结构的金属骨架,类似于套在人头上的类似头盔的装置,首先是技能和状态,这是最重要的一点机器人享受玩家的.....

    经验 日期:2023-08-20

  • 时域和频域,信号的时域和频域的变化关系时域和频域,信号的时域和频域的变化关系

    信号的时域和频域的变化关系2,时域与频域关系3,什么是信号的时域分析和频域分析4,时域与频域的区别5,怎样理解时域和频域6,什么是频域电磁法什么是时域电磁法1,信号的时域和频域的变化关系频.....

    经验 日期:2023-08-20