文件的随机读写.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
文件的随机读写

文件的随机读写 文件的随机读写.txt 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 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时, 表明出现错误。 下面程序把一个浮点数组以二进制方式写入文件test_b.dat中。 例14: #include main() { float f[6]={3.2, -4.34, 25.04, 0.1, 50.56, 80.5}; /*定义浮点数组并初始化*/ int i; FILE *fp; fp=fopen(test_b.dat, wb); /*创建一个二进制文件只写*/ fwrite(f, sizeof(float), 6, fp);/*将6个浮点数写入文件中*/ fclose(fp); /*关闭文件*/ } 下面例子从test_b.dat文件中读100个整型数, 并把它们放到dat数组中。 例15: #include main() { FILE *fp; int dat[100]; fp=fopen(test_b.dat, rb);/*打开一个二进制文件只读*/ if(fread(dat, sizeof(int), 100, fp)!=100) /*判断是否读了100个数*/ { if(feof(fp)) printf(End of file); /*不到100个数文件结束*/ else printf(Read error); /*读数错误*/ fclose(fp); /*关闭文件*/ } 注意: 当用标准文件函数对文件进行读写操作时, 首先将所读写的内容放进缓冲区, 即写函数只对输出缓冲区进行操作, 读函数只对输入缓冲区进行操作。例如向一 个文件写入内容, 所写的内容将首先放在输出缓冲区中, 直到输出缓冲区存满或 使用fclose()函数关闭文件时, 缓冲区的内容才会写入文件中。若无fclose() 函数, 则不会向文件中存入所写的内容或写入的文件内容不

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档