当前位置:主页   - 电脑 - 程序设计 - C/C++
C语言基础教程(三)输入输出函数及控制流程语句(10)
来源:网络   作者:王大刚    更新时间:2010-09-26
收藏此页】    【字号    】    【打印】    【关闭
3.文件的随机读写
有时用户想直接读取文件中间某处的信息,若用文件的顺序读写必须从文件头开始直到要求的文件位置再读,这显然不方便。Turbo C2.0提供了一组文件的随机读写函数,即可以将文件位置指针定位在所要求读写的地方直接读写。
文件的随机读写函数如下:
int fseek (FILE *stream, long offset, int fromwhere);
int fread(void *buf, int size, int count, FILE *stream);
int fwrite(void *buf, int size, int count, FILE *stream);
long ftell(FILE *stream);
fseek()函数的作用是将文件的位置指针设置到从fromwhere开始的第offset字节的位置上,其中fromwhere是下列几个宏定义之一:
文件位置指针起始计算位置fromwhere
━━━━━━━━━━━━━━━━━━━━━━━━━━━
符号常数 数值 含义
───────────────────────────
SEEK_SET 0 从文件开头
SEEK_CUR 1 从文件指针的现行位置
SEEK_END 2 从文件末尾
━━━━━━━━━━━━━━━━━━━━━━━━━━━
offset是指文件位置指针从指定开始位置(fromwhere指出的位置)跳过的字节数。它是一个长整型量,以支持大于64K字节的文件。fseek()函数一般用于对二进制文件进行操作。
当fseek()函数返回0时表明操作成功, 返回非0表示失败。下面程序从二进制文件test_b.dat中读取第8个字节。
例13:
#include<stdio.h>
main()
{
FILE *fp;
if((fp=fopen("test_b.dat", "rb"))==NULL)
{
printf("Can't open file");
exit(1);
}
fseek(fp, 8. 1, SEEK_SET);
fgetc(fp);
fclose(fp);
}
fread()函数是从文件中读count个字段,每个字段长度为size个字节,并把它们存放到buf指针所指的缓冲器中。
fwrite()函数是把buf指针所指的缓冲器中,长度为size个字节的count个字段写到stream指向的文件中去。
随着读和写字节数的增大,文件位置指示器也增大,读多少个字节,文件位置指示器相应也跳过多少个字节。读写完毕函数返回所读和所写的字段个数。
ftell()函数返回文件位置指示器的当前值,这个值是指示器从文件头开始算起的字节数,返回的数为长整型数,当返回-1时,表明出现错误。
其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明