fseek、ftell、fread、fwrite

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值