- 1、本文档共63页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言_第13章文件
第13章 文 件 13.1 C文件概述 13.2 文件类型指针 13.3 文件的打开与关闭 13.4 文件的读写 13.5 文件的定位 13.6 出错的检测 13.7 文件输入输出小结 习题 13.1 C文件概述 目录结构(Directory Tree) 操作系统的文件系统都采用树型的目录结构 绝对路径(Absolute Path) 完整的描述文件位置的路径就是绝对路径 D:\VCProjects\sample\main.cpp 相对路径(Relative Path) 为什么要使用相对路径?“可移植性” 相对于什么? 相对于当前路径 如果当前路径是: D:\VCProjects 则: sample\main.cpp “../” 表示上一级目录 13.2 文件类型指针 13.3 文件的打开与关闭 文件使用方式 意 义“rt” 只读打开一个文本文件, 只允许读数据 “wt” 只写打开或建立一个文本文件, 只允许写数据“at” 追加打开一个文本文件, 并在文件末尾写数据“rb” 只读打开一个二进制文件, 只允许读数据“wb” 只写打开或建立一个二进制文件, 只允许写数据“ab” 追加打开一个二进制文件, 并在文件末尾写数据“rt+” 读写打开一个文本文件, 允许读和写“wt+” 读写打开或建立一个文本文件, 允许读写“at+” 读写打开一个文本文件, 允许读, 或在文件末追加数据“rb+” 读写打开一个二进制文件, 允许读和写 “wb+” 读写打开或建立一个二进制文件, 允许读和写“ab+” 读写打开一个二进制文件, 允许读, 或在文件末追加数据 r(read): 读w(write): 写a(append): 追加t(text): 文本文件, 可省略不写b(binary): 二进制文件+: 读和写 说明: 13.3.2 文件的关闭(fclose函数) 13.4 文件的读写 2. fgetc函数 3. fputc和fgetc函数使用举例 13.4.2 fread函数和fwrite函数 实验 13.6 13.7 void main() { load(); for (int i=0; iSIZE; i++) { printf(%s %d %d %s\n,stud[i].name, stud[i].num, stud[i].age, stud[i].addr); } save(); } 请注意输入输出数据的状况。从键盘输入4个学生的数据是ASCII码, 也就是文本文件。在送到计算机内存时, 回车和换行符转换成一个换行符。再从内存以“wb”方式(二进制写)输出到“stu_list”文件, 此时不发生字符转换, 按内存中存储形式原样输出到磁盘文件上。在上面验证程序中, 又用fread函数从“stu_list”文件向内存读入数据, 注意此时用的是“rb”方式, 即二进制方式, 数据按原样输入, 也不发生字符转换。也就是这时候内存中的数据恢复到第一个程序向 “stu-list”输出以前的情况。最后在验证程序中, 用printf函数输出到屏幕, printf是格式输出函数, 输出ASCII码, 在屏幕上显示字符。换行符又转换为回车加换行符。 如果企图从“stu_list”文件中以“r”方式读入数据就会出错。 fread和fwrite函数一般用于二进制文件的输入输出。因为它们是按数据块的长度来处理输入输出的, 在字符发生转换的情况下很可能出现与原设想的情况不同。 例如, 如果写fread(stud[i], sizeof(struct student-type), 1, stdin); 企图从终端键盘输入数据, 这在语法上并不存在错误, 编译能通过。如果用以下形式输入数据: Zhang 1001 10 room-101 … 由于fread函数要求一次输入29个字节(而不问这些字节的内容), 因此输入数据中的空格也作为输入数据而不作为数据间的分隔符了。连空格也存储到stud[i]中了, 显然是不对的。 这个题目要求的是从键盘输入数据, 如果已有的数据已以二进制形式存储在一个磁盘文件“stu-dat”中, 要求从其中读入数据并输出到“stu-list”文件中, 可以编写一个load函数, 从磁盘文件中读二进制数据。 void load( ) {FILEfp; int i; if((fp=fopen(stu-dat, rb))==NULL) {printf(cannot open infile\n); return;} for(i=0;i
您可能关注的文档
最近下载
- NB∕T 10342-2019 水电站调节保证设计导则.pdf
- 2025年中国碳化硼陶瓷项目创业投资方案.docx
- conval(康阀)画册.pdf VIP
- 污水波纹管工程施工方案(3篇).docx VIP
- 微观经济学知到智慧树期末考试答案题库2024年秋北方工业大学.docx VIP
- 2025年衢州常山县统计局公开招聘编外统计员13人笔试备考试题含答案详解(能力提升).docx
- 2024届高考英语二轮复习50分阅读理解提分练(五).docx VIP
- DB4211T 12-2022 医疗废物暂存间卫生管理规范.docx VIP
- 中国氯气项目创业计划书.docx
- 中国红磷阻燃剂项目商业计划书.docx
文档评论(0)