- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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()
函数, 则不会向文件中存入所写的内容或写入的文件内容不
您可能关注的文档
- 实现IO端口直接位定义操作的一个示例.doc
- 实现JAVA验证码.doc
- 实践调查-对国有企业领导人员职务消费问题的调查与思考.doc
- 宣武医院:e-HR让管理走向精细化.doc
- 审题立意概述.doc
- 客源国资料.doc
- 室内设计的理念.doc
- 家用跑步机营销探秘.doc
- 宾浯前置.doc
- 富康04参数.doc
- 2025年长沙银行浏阳支行社会招聘考试备考题库及答案解析.docx
- 2025年浙商银行成都分行社会招聘考试备考题库及答案解析.docx
- 2025中国农业科学院烟草研究所高层次人才招聘5人考试备考题库及答案解析.docx
- 2025中国冶金地质总局二局 国冶二局(福建)集团有限公司招聘10人考试备考题库及答案解析.docx
- 2025中国宗教杂志社招聘3人考试备考题库及答案解析.docx
- 2025年长沙银行益阳支行社会招聘考试备考题库及答案解析.docx
- 2025中国农业科学院农田灌溉研究所第二批招聘14人(河南)考试备考题库及答案解析.docx
- 2025中国农业科学院郑州果树研究所青年英才招聘3人考试备考题库及答案解析.docx
- 【统编版】高中语文必修上册第1单元2.1《立在地球边上放号》精美课件(23张PPT).pptx
- 【统编版】高一语文必修上册第一单元2.1《立在地球边上放号》优质课(26张PPT)课件.pptx
最近下载
- 绿化养护方案(同名6533).doc VIP
- T∕ZZB 1894-2020 双平臂落地抱杆.pdf VIP
- (2024)反洗钱知识竞赛题库(含答案).pptx VIP
- 4-输电线路工程质量强制性条文执行记录表.doc VIP
- 回忆鲁迅先生教案.docx VIP
- 计算机日常使用维护培训ppt课件.pptx VIP
- GB50204-2015 《混凝土结构工程施工质量验收规范》GB50204-2015 (1).docx VIP
- 2025年4月20日四川省事业单位考试《公共基础知识》试题及答案解析参考.pdf
- 《2#空压机站施工组织设计》.doc
- 13J933-2 体育场地与设施(二).docx VIP
文档评论(0)