read pread write pwrite fseek lseek是同一类函数吗
lseek是库函数。 库函数就是C++最基本的函数,也就是说没有这些东西无法定义C++。 C++的制定标准,并不决定库函数的底层是如何实现的,主要决定实现结果和大致逻辑。 所以,对于不同系统不同型号机器的lseek,它的实现是不一样的。 在大多数系统

_lread(),_lclose()_lseek()三个函数个的功能是什么?有什么用?
这三个是windows系统的API函数,是kernel32.dll里面的,主要是将文件读入内存,是直接读取原始文件,不会有任何修改
HFILE _lopen( LPCSTR lpPathName, // pointer to name of file to openint iReadWrite // file access mode);//打开文件 UINT _lread(HFILE hFile, // handle to fileLPVOID lpBuffer, // pointer to buffer for read dataUINT uBytes // length, in bytes, of data buffer); //读文件 HFILE _lclose(HFILE hFile // handle to file); // 关闭文件 long _lseek(int fd,long offset,int origin); //定位文件指针

函数“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 #include

关于lseek的用法!急!!
思路是这样的。 我想你的意思是说在文件中有两份同样的数据,一份在前面未排序,一会在后面,排序方法很简单。先移至末尾,会吧,这个简单然后利用tell函数求出文件长度(在末尾时候的偏移就是文件长度)除以2的值就是要移动去的地方,再移动到文件的中间 即可
先得到原文件的长度,然后在将光标移到该位置顺序往下读取文件就行了。

fseek函数
fseek函数: int fseek(FILE *stream, long offset, int fromwhere);函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。实验得出,超出文件末尾位置,还是返回0。往回偏移超出首位置,返回-1,且指向一个-1的位置,请小心使用。fseek函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型。功能:重定位流(数据流/文件)上的文件内部位置指针。注意:文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变指向别的文件。程序例:#include long filesize(FILE*stream);int main(void){FILE *stream;stream=fopen("MYFILE.TXT","w+");fprintf(stream,"Thisisatest");printf("FilesizeofMYFILE.TXTis%ldbytesn",filesize(stream));fclose(stream);return 0;}long filesize(FILE*stream){long curpos,length;curpos=ftell(stream);fseek(stream,0L,SEEK_END);length=ftell(stream);fseek(stream,curpos,SEEK_SET);return length;}int fseek( FILE *stream, long offset, int origin );第一个参数stream为文件指针第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SETSEEK_SET: 文件开头SEEK_CUR: 当前位置SEEK_END: 文件结尾其中SEEK_SET,SEEK_CUR和SEEK_END依次为0,1和2.简言之:fseek(fp,100L,0);把文件内部指针移动到离文件开头100字节处;fseek(fp,100L,1);把文件内部指针移动到离文件当前位置100字节处;fseek(fp,-100L,2);把文件内部指针退回到离文件结尾100字节处。使用实例:#include#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,STUn){FILE*fp;fp=fopen(filename,"rb+");fseek(fp,-1L*sizeof(STU),SEEK_END);fwrite(&n,sizeof(STU),1,fp);fclose(fp);}voidmain()/*修改覆盖最后一个学生数据*/{STUt[N]={{10001,"MaChao",91,92,77},{10002,"CaoKai",75,60,88},{10003,"LiSi",85,70,78},{10004,"FangFang",90,82,87},{10005,"ZhangSan",95,80,88}};STUn={10006,"ZhaoSi",55,70,68},ss[N];inti,j;FILE*fp;fp=fopen("student.dat","wb");fwrite(t,sizeof(STU),N,fp);fclose(fp);fp=fopen("student.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);printf("nTheoriginaldata:nn");for(j=0;j是的 int fseek(FILE *stream, long offset, int fromwhere);函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。实验得出,超出文件末尾位置,还是返回0。往回偏移超出首位置,返回-1,且指向一个-1的位置,请小心使用。 fseek函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型。
feek(文件指针,位移量,起始点) SEEK-END的数字表示就是2,既文件末尾
定位文件尾。注意此时并不是定位到文件的最后一字符,而是在定位文件最后一个字符之后的位置
首先:fseek函数的功能是,重定位流上的文件指针。 例如,#include"stdio.h"fseek(文件类型指针fp,位移量,起始点);函数功能:把与fp有关的文件位置指针放到一个指定位置。SEEK_SET 代表文件开头SEEK_CUR 代表文件当前位置SEEK_END 代表文件末尾例如:fseek(fp,50L,0);或fseek(fp,50L,SEEK_SET);其作用是将位置指针移到离文件头50个字节处。 所以根据你的提问,确实是你所理解的将fp指针移到到文件结尾。

本文由 在线网速测试 整理编辑,转载请注明出处。