fread、fwrite和fseek

fread(buffer,size,count,fp);   用来读入一个数据块
fwrite(buffer,size,count,fp); 用来写入一个数据块

参数说明:
(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
(2)size:要读写的字节数;
(3)count:要进行读写多少个size字节的数据项;
(4)fp:文件型指针。

举例:

1.fread(&id,1,10,f)就是把f里面的值读到id里面,每次读1个字节,一共读10次,或者把id里面的值都读完,不到10次也会停止。

2.fwrite(&id,1,10,f)就是把id里面的值写到f里面,每次读1个字节,一共读10次或是fwrite(&id,10,1,f)就是把id里面的值写到f里面,每次写10个字节,一共写1次。

注意,(1)fread(&id,1,10,f)的返回值为0~10,fread(&id,10,1,f)的返回值是0~1。

            (2)当读取对象是结构体时,并且1字节对齐、连续存储,可以一次性读入整个数据。

            (3)每次进行文件操作需要对返回值进行判断,预防意外情况发生。


功   能: 重定位流上的文件指针

用   法: int fseek(FILE *stream, long offset, int fromwhere)

函数功能:把与fp有关的文件位置指针放到一个指定位置。

参数说明:stream为一个文件指针,即其类型为FILE*的变量;offset是偏移量,是相对于后面的起始点fromwhere的;fromwhere为偏移的起始点。其中,“位移量”是long型数据,它表示位置指针相对于“起始点”移动的字节数。如果位移量是一个正数,表示从“起始点”开始往文件尾方向移动;如果位移量是一个负数,则表示从“起始点”开始往文件头方向移动。“起始点”不能任意设定,它只能是在stdio.h中定义的三个符号常量之一:

起始点

对应的数字

代表的文件位置

SEEK_SET

0文件开头

SEEK_CUR

1文件当前位置

SEEK_END

2文件末尾

举例:fseek(fp,50L,0);或fseek(fp,50L,SEEK_SET);     其作用是将位置指针移到离文件头50个字节处。

补充说明:如果需要将文件指针的位置移动到文件的开始,可以如此:fseek(fp,0L,0);如果需要将文件指针的位置移动到文件的结尾,可以如此:fseek(fp,0L,2);


ftell函数是用来获取文件的当前读写位置;

函数原型: long ftell(FILE *fp)

函数功能:得到流式文件的当前读写位置,其返回值是当前读写位置偏离文件头部的字节数.

ban=ftell(fp); 是获取fp指定的文件的当前读写位置,并将其值传给变量ban.


int feof(

   FILE *stream
);

    如果一次读取操作尝试读取超出文件,结束 超出文件函数返回非零值;否则返回 0。

    如果文件包含 10 个字节,并且您读取 10 个字节从文件, feof 将返回 0,这是因为,因此,即使文件指针位于文件的末尾,您没有尝试在末尾外读取。 在尝试读取后一个第 11 个字节 feof 将返回一个非零值。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值