C程序设计文件流实用教案

上传人:莉**** 文档编号:73082320 上传时间:2022-04-10 格式:PPT 页数:46 大小:797.50KB
收藏 版权申诉 举报 下载
C程序设计文件流实用教案_第1页
第1页 / 共46页
C程序设计文件流实用教案_第2页
第2页 / 共46页
C程序设计文件流实用教案_第3页
第3页 / 共46页
资源描述:

《C程序设计文件流实用教案》由会员分享,可在线阅读,更多相关《C程序设计文件流实用教案(46页珍藏版)》请在装配图网上搜索。

1、1四四. . 教学过程教学过程(guchng)(guchng)提提要要 文件和文件流的概念 文件的打开、关闭和读写 顺序(shnx)文件 随机文件 布置作业题目和实验第1页/共45页第一页,共46页。2内容提要(ni rn t yo)3.11 文件(wnjin)流操作第2页/共45页第二页,共46页。3先看一个(y )例子:#include void main() / 程序(chngx)从这里开始运行ofstream SaveFile(e:f1.txt);SaveFile ”;而向一个文件写入数据,可以使用其put、write函数以及(yj)插入符“”;而向一个文件写入数据,可以使用put、w

2、rite函数以及插入符“”。第17页/共45页第十七页,共46页。18【例3.11-1】 向顺序(shnx)文件的读写操作#include #include / 文件操作(cozu)必须的头文件void main()fstream file1;/ 定义一个fstream类的对象用于读file1.open(Ex_DataFile.txt, ios:in);if (!file1)coutEx_DataFile.txt不能打开!n;return;fstream file2;/ 定义一个fstream类的对象用于写file2.open(Ex_DataFileBak.txt, ios:out | ios

3、:trunc);第18页/共45页第十八页,共46页。19if (!file2)coutEx_DataFileBak.txt不能创建!n;file1.close();return; char ch; while (file1.get(ch)/或:file1.read(&ch,1) coutch; file2.write(&ch, 1); /或:file2ch file2.close(); / 不要(byo)忘记文件使用结束后要及时关闭file1.close();第19页/共45页第十九页,共46页。20【例3.11-2 】有一个整型数组,含10个元素,从键盘输入10个整数给数组,将此数组存到磁

4、盘文件中.#include “fstream.h”int main( )int a10; ofstream outfile(f1.dat,ios:out);/定义文件流对象,打开磁盘文件f1.dat if(!outfile) /如果打开失败(shbi),outfile返回0值 coutopen error! endl; return(1); 第20页/共45页第二十页,共46页。21 coutenter 10 integer numbers:endl; for(int i=0;iai; outfileai ; /向磁盘(c pn)文件输出数据 outfile.close(); /关闭磁盘(c

5、pn)文件f1.dat return 0; 第21页/共45页第二十一页,共46页。22第22页/共45页第二十二页,共46页。23第23页/共45页第二十三页,共46页。24for(i=0;iai;/从磁盘文件读入10个整数,顺序存放(cnfng)在a数组中 coutai ; /在显示器上顺序显示10个数 coutendl; max=a0;order=0;第24页/共45页第二十四页,共46页。25 for(i=1;imax) max=ai; /将当前(dngqin)最大值放在max中 order=i; /将当前(dngqin)最大值的元素序号放在order中 coutmax=maxendl

6、order=orderendl; infile.close(); return 0;第25页/共45页第二十五页,共46页。263.11.4 随机(su j)文件操作 随机文件操作,即在文件中通过C+相关的函数移动文件指针(zhzhn),并指向所要处理的字符(字节)。 (1)在istream类中提供了3个操作读指针(zhzhn)的成员函数:istream& istream:seekg (long pos);istream& istream:seekg(long off, ios:seek_dir dir );streampos istream:tellg();第26页/共45页第二十六页,共4

7、6页。27 其中(qzhng),pos为文件指针的绝对位置;off为文件指针的相对偏移量;dir为文件指针的参照位置,其值可能为:ios:cur文件指针的当前位置ios:beg文件开头ios:end文件尾 tellg()函数没有参数,它返回一个long型值,用来表示从文件开始处到当前指针位置之间的字节数。第27页/共45页第二十七页,共46页。28(2)在ostream类中同样提供了3个操作写指针(zhzhn)的成员函数:ostream& istream:seekp (long pos);ostream& istream:seekp(long off,dir);streampos istrea

8、m:tellp(); 这3个成员函数的含义与前面3个操作读指针(zhzhn)成员函数的含义相同,只不过它们是用来操作写指针(zhzhn)的。第28页/共45页第二十八页,共46页。29【例3.11_4 】将一批数据以二进制形式存放在磁盘(c pn)文件中。#include fstream.hstruct student char name20; int num; int age; char sex;int main( ) student stud3=Li,1001,18,f,Fun,1002,19,m,Wang,1004,17,f; 第29页/共45页第二十九页,共46页。30ofstream

9、 outfile(e:stud.dat,ios:binary); if(!outfile) coutopen error!endl; return 1; /退出(tuch)程序 for(int i=0;i3;i+) outfile.write(char*)&studi,sizeof(studi); outfile.close( );return 0;第30页/共45页第三十页,共46页。31【例3.11_5】将3.11_4以二进制形式存放在磁盘(c pn)文件中的数据读入内存并在显示器上显示。#include fstream.hstruct student char name20;int nu

10、m;int age;char sex;int main( ) student stud3;int i;ifstream infile(stud.dat,ios:binary);第31页/共45页第三十一页,共46页。32if(!infile)coutopen error!endl;return(0);for(i=0;i3;i+)infile.read(char*)&studi,sizeof(studi);infile.close( );for(i=0;i3;i+)coutNO.i+1endl;coutname:studi.nameendl;coutnum:studi.numendl;couta

11、ge:studi.ageendl;coutsex:studi.sexendlendl;return 0; 第32页/共45页第三十二页,共46页。33 问题:如果(rgu)只想读出第2个学生的信息,如何修改程序?第33页/共45页第三十三页,共46页。34【例3.11_6】重载流输出输入(shr)运算符读写随机文件的#include #include #include #include class CStudentpublic:CStudent(char* name, char* id, float score = 0);void print();friend ostream& operato

12、r ( istream& is, CStudent& stu );private:char strName10;/ 姓名(xngmng)char strID10;/ 学号float fScore;/ 成绩;第34页/共45页第三十四页,共46页。35续例3.11_6CStudent:CStudent(char* name, char* id, float score)strncpy(strName, name, 10);strncpy(strID, id, 10);fScore = score;void CStudent:print()coutendl学生(xu sheng)信息如下:endl

13、;cout姓名:strNameendl;cout学号:strIDendl;cout成绩:fScoreendl;第35页/共45页第三十五页,共46页。36ostream& operator ( istream& is, CStudent& stu )char name10;char id10;is.read(name, 10);is.read(id, 10);is.read(char*)&stu.fScore, 4);strncpy(stu.strName, name, 10);strncpy(stu.strID, id, 10);return is;续例3.11_6第36页/共45页第三十六

14、页,共46页。37void main()CStudent stu1(MaWenTao,99001,88);CStudent stu2(LiMing,99002,92);CStudent stu3(WangFang,99003,89);CStudent stu4(YangYang,99004,90);CStudent stu5(DingNing,99005,80);fstream file1;file1.open(student.dat,ios:out|ios:in|ios:binary);file1stu1stu2stu3stu4*one;one-print();续例3.11_6第37页/共4

15、5页第三十七页,共46页。38续例3.11_6file1.seekp(size*1);file1*one;one-print();file1.seekp(size*2, ios:cur);file1*one;one-print();file1.close();delete one;第38页/共45页第三十八页,共46页。39续例3.11_6运行(ynxng)结果如下:程序中,先将五个学生记录保存到文件中,然后移动文件指针,读取相应的记录,最后将数据输出到屏幕(pngm)上。需要说明的是,由于文件流file1既可以读(ios:in)也可以写(ios:out),因此用seekg代替程序中的seek

16、p,其结果也是一样的。第39页/共45页第三十九页,共46页。40作业(zuy) 71、建立两个磁盘(c pn)文件f1.dat和f2.dat,编程实现以下工作:(1)从键盘输入20个整数,分别存放在两个磁盘(c pn)文件中(每个文件中放10个整数);(2)从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面;(3)从f2.dat中读入20个整数,将它们按从小到大排序存放到f2.dat(不保留原来的数据)。第40页/共45页第四十页,共46页。412、编程实现以下功能:(1)按职工号由小到大的顺序将5个员工的数据(包括职工号、姓名、年龄、工资)输出到磁盘文件中保存。(2)从键

17、盘输入1个员工的数据(职工号大于已有的职工号),增加到文件的末尾。(3)输出文件中全部职工的数据。(4)从键盘输入一个号码,从文件中查找有无此职工号,如有则显示此职工的全部数据。如果没有,就输出“查无此人”。可以反复(fnf)多次查询,如果输入查找的职工号为0,就结束查询。第41页/共45页第四十一页,共46页。42实验(shyn)5 内容(nirng)参见“实验报告5”。第42页/共45页第四十二页,共46页。43实验(shyn)6实验题目:设计复数计算器目的和要求(1)掌握函数重载的特性;(2)掌握运算符重载的特性;(3)掌握文件读写的编程方法。设计任务和要求:(1)所设计的复数计算器可以

18、进行(jnxng)+、-、*、+=、*=、+、-、=、=、=是针对复数的模进行(jnxng);(2)设计输入重载函数,要求能接收从键盘输入a+bi形式的复数,在程序中可以识别出实部并正确赋值。第43页/共45页第四十三页,共46页。44 (3)设计计算器测试程序,对加减法进行测试,要求在两位数以内进行,对乘法进行测试,乘法要求为一位数的运算。 (4)设计记录(jl)功能,可以记录(jl)下不同用户使用计算器的情况,记录(jl)以文件形式保存在计算机内,程序运行时要求输入用户名,显示该用户以前的记录(jl)。用户记录(jl)包括:做了多少次加减法、乘法、进行测试的次数,后3次的测试平均分等,在退

19、出计算器程序时用新的用户记录(jl)代替原有记录(jl)。第44页/共45页第四十四页,共46页。45感谢您的欣赏(xnshng)!第45页/共45页第四十五页,共46页。NoImage内容(nirng)总结1。第3页/共45页。fstream类的头文件是fstream.h。第10页/共45页。而向一个(y )文件写入数据,可以使用其put、write函数以及插入符“”。从文件中读取多个字符,读取个数由参数count决定。向文件写入多个字符,字符个数由count决定。/从磁盘文件读入10个整数,顺序存放在a数组中。dir为文件指针的参照位置,其值可能为:。第44页/共45页。感谢您的欣赏第四十六页,共46页。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!