fseek:
原型:int fseek(FILE *stream, long offset, int fromwhere);
函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)个字节的位置。
如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
fseek(fp,100L,0);把文件内部
指针移动到离文件开头100字节处;
fseek(fp,100L,1);把文件内部
指针移动到离文件当前位置100字节处;
fseek(fp,-100L,2);把文件内部
指针退回到离文件结尾100字节处。
ftell:
函数 ftell 用于得到文件位置指针当前位置相对于文件首的偏移字节数.
fseek(fp, 0L,SEEK_END);
len =ftell(fp);
首先将文件的当前位置移到文件的末尾,然后调用函数ftell()获得当前位置相对于文件首的位移,该位移值等于文件所含字节数。
fread:
执行一次后,会在内核中记录本次读取到的位置,下次执行时指针在上次执行到的最后字节位置。如果到文件末尾则返回0
首先明确一下,同一个文件在同一个进程中可以被打开多次,只是返回的文件描述符不同。
read、write、lseek都涉及到文件指针,文件指针是跟文件描述符关联在一起,跟物理文件是分开的。
每个文件描述符都有3个指针:begin、curr、end。可以有两种方法更改curr指针:每次write或read的末位置就是curr指针的位置;使用lseek(int fd,int offset,int whence)。每次read都从curr位置开始,每次write都从begin位置开始。
C标准库没有write函数,只有带缓冲的IO库fread,fwrite之类的
char *abc= new char[10];只有C++中才有new