- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
12.13.2 从键盘读取记录 编写一个函数,从stdin中读取姓名字符串和年龄值,将它们存储在Record对象中。该函数的原型如下: struct Record *getrecord(struct Record *precord); 这个函数的参数是指向已有Record结构对象的指针,其返回值是该对象的地址。因此,可以把该函数的调用作为Record *类型的变元传送给另一个函数 。 12.13.3 将记录写入文件 现在,定义一个函数,将Record对象的成员写入FILE *指针指向的文件中,该函数的原型如下: void writerecord(struct Record *precord, FILE *pFile); 第一个参数是指向Record结构的指针,该结构的姓名和年龄成员要写入文件。第二个参数是文件指针 12.13.4 从文件中读取记录 下面是从文件中读取一个记录的函数的原型: struct Record *readrecord(struct Record *precord, FILE *pFile); 要读取的文件用第二个参数指定,即文件指针。为了方便,返回值是作为第一个参数传送的地址。 12.13.5 写入文件 下面是将任意个记录写入文件的函数原型,其中记录是从键盘上输入的: void writefile(char *filename, char *mode); 第一个参数是要写入的文件名,这表示该函数要打开文件。第二个参数是要使用的文件打开模式。将模式指定为“wb+”,writefile()函数就会删除文件的原始内容,再将数据写入文件。如果文件不存在,就用指定的名称创建一个文件。如果模式指定为“ab+”,记录就追加到已有的文件中,如果文件不存在,就创建一个新文件。 12.13.6 列出文件内容 将文件中的记录输出到标准输出流中的函数原型如下: void listfile(char *filename); 其参数是文件名,所以函数要先打开文件,操作完成后关闭它。 12.13.7 更新已有的文件内容 更新文件中的已有记录增加了复杂性,因为文件中的姓名有不同的长度。不能简单地覆盖已有的记录,因为用于替换的记录可能在原来的空间中放不下。如果新记录的长度与原记录相同,就可以覆盖它,如果不同,就只能将数据写入一个新文件。下面是更新文件的函数的原型: void updatefile(char *filename); 唯一的参数是文件名,所以该函数会查找出要更新的记录,并打开和关闭文件。 12.14 更新已有的文件内容 打开一个二进制文件,以执行更新操作。可以在任意位置执行读写操作 r+b 或 rb+ 打开一个二进制文件,以执行更新操作。将数据添加到文件末尾 a+b或 ab+ 打开或创建一个二进制文件,以执行更新操作。已有的文件内容会被删除 w+b 或 wb+ 打开一个文本文件,以执行更新操作。可以在任意位置执行读写操作 r+ 打开或创建一个文本文件,以执行更新操作。将数据添加到文件末尾 a+ 打开或创建一个文本文件,以执行更新操作。已有的文件内容会被删除 w+ 打开一个二进制文件,以执行读取操作 rb 打开一个二进制文件,以执行追加操作 ab 打开或创建一个二进制文件,以执行写入操作 wb 打开一个文本文件,以执行读取操作 r 打开一个文本文件,以执行追加操作,将数据添加到文件末尾 a 打开或创建一个文本文件,以执行写入操作 w 说 明 模 式 12.15 更新已有的文件内容 本章的最后将前面所学的内容应用于最后一个程序。这个程序比前面的例子短,但很有趣。 问题 分析 解决方案 12.15.1 问题 需要解决的问题是编写一个文件查看器程序,它可以将文件显示为十六进制和字符方式。 12.15.2 分析 这个程序以二进制只读模式打开文件,将信息显示在两列中,第一列是文件中表示为十六进制的字节,第二列是显示为字符的字节。文件名作为一个命令行参数提供,如果没有提供文件名,程序就要求输入文件名。 步骤如下: (1) 如果没有提供文件名,就要求用户输入。 (2) 打开文件。 (3) 读取并显示文件的内容。 12.15.3 解决方案 检查函数main()的参数,就可以确定文件名是否出现在命令行中。前面都忽略了给main()函数传送参数,但是这里可以使用
您可能关注的文档
- 2014年CH14-1_UP1实验板介绍与元件烧录.ppt
- 2014年chap 02 嵌入式系统的基本知识.ppt
- 2014年chap 03 ARM微处理器体系结构与指令集.ppt
- 2014年Chap1 Java语言概述.ppt
- 2014年chap1 基本C++语言.ppt
- 2014年CHAP2 HTML.ppt
- 2014年chap3Java语言基础.ppt
- 2014年chap04-任务管理.ppt
- 2014年chap4-C++课件-清华大学郑莉.ppt
- 2014年chap06 数据库接口技术费下载.ppt
- 2024年秋新冀教版7年级上册英语教学课件 Unit 5 Animal friends (第4课时) Lesson 4.pptx
- 2025年托福考试写作高分预测试卷之科幻小说中的未来医疗篇.docx
- 2025年秋新鲁教版化学九年级上册同步教学课件.pptx
- 2024年秋季学期新冀教版7年级上册英语课件 Unit 3 All about me (第1课时)Lesson 1.pptx
- 2025年秋季新华师版数学八年级上册同步教学课件.pptx
- 2024年秋新冀教版7年级上册英语教学课件 Unit 7 Days and months (第2课时) Lesson 2.pptx
- 2024年秋季学期新青岛版(六三制)数学三年级上册课件 智慧广场2 移多补少.pptx
- 2024年秋季学期新人教版7年级上册英语课件 Unit 6 Section B (2a-Reflecting)(第5课时).pptx
- 2024年秋新人教版一年级上册数学教学课件 6 11~20各数的认识 第4课时 解决问题.pptx
- 湖北省武汉市第四十九中学2024-2025学年高一下学期5月月考政治试题_1.docx
文档评论(0)