《C语言程序设计案例式教程》课件 第11章 文件管理_第1页
《C语言程序设计案例式教程》课件 第11章 文件管理_第2页
《C语言程序设计案例式教程》课件 第11章 文件管理_第3页
《C语言程序设计案例式教程》课件 第11章 文件管理_第4页
《C语言程序设计案例式教程》课件 第11章 文件管理_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第11章文件管理《C语言程序设计案例式教程(AI助学)》学习目标/Target了解计算机中文件的相关知识,能够说出流、文件、文件指针与文件位置指针的概念,以及文件的分类。

掌握文件的打开与关闭方法,能够调用fopen()与fclose()函数打开与关闭文件。掌握文件的单字符读写函数,能够调用fgetc()与fputc()函数实现文件的单字符读写。学习目标/Target掌握文件的单行读写函数,能够调用fgets()与fputs()函数实现文件的单行读写。

掌握以二进制形式读写文件的方法,能够调用fread()与fwrite()函数实现以二进制形式读写文件。掌握以指定的格式读写文件的方法,能够调用fscanf()与fprintf()函数实现以指定的格式读写文件。章节概述/Summary对一台计算机而言,其基本的功能就是存储数据。一般情况下,数据在计算机中都是以文件的形式存储的。在程序中经常需要对文件进行操作,例如打开文件、向文件中写入内容、关闭文件等。本章将详细讲解如何使用C语言进行文件管理。目录/Contents010203【案例11-1】打开电子文件【案例11-2】输出文件内容【案例11-3】班级通讯录04【案例11-4】档案信息存储目录/Contents050607【案例11-5】批阅数学试卷【案例11-6】图书管理系统使用AIGC工具优化图书管理系统中的图书信息输入函数【案例11-1】打开电子文件01案例描述假如现在有一篇电子版的《史记》摘录笔记保存在计算机D盘中,文件名称为“《史记》摘录笔记.txt”,如果要阅读这篇摘录笔记,需要先打开文件。本案例要求编写一个程序,打开“《史记》摘录笔记.txt”文件。知识需求打开阅读修改学习文件相关知识文件操作了解计算机中文件的相关知识,能够说出流的概念。学习目标知识讲解1.计算机中的流1.计算机中的流流:通过不同输入/输出设备(键盘、内存、显示器、网络等)之间的数据传输。流的本质:字节序列。输入程序的字节序列被称为输入流,从程序输出的字节序列被称为输出流。知识讲解1.计算机中的流输入输出流可进一步细分为文本流和二进制流。文本流二进制流输入输出流输入输出的数据是一系列的字符,可以修改。输入输出的数据是一系列的字节,不可以修改。知识讲解1.计算机中的流stdinstdoutstderr预定义流标准输入流,对应于键盘上的输入。标准输出流,对应于控制台上正常输出。标准错误输出流,对应于控制台上错误输出。知识讲解1.计算机中的流了解计算机中文件的相关知识,能够说出文件的概念。学习目标知识讲解2.文件的概念文件:一般指存储在外部介质上数据的集合。一个文件要有唯一的文件标识,以便用户识别和引用。文件标识包括3部分:文件路径、文件名主干和文件后缀。知识讲解2.文件的概念了解计算机中文件的相关知识,能够说出文件的分类的概念。学习目标知识讲解3.文件的分类根据数据的组织形式,数据文件可分为文本文件和二进制文件。1二进制文件数据在内存中是以二进制形式存储,如果不加转换地将其输出到外存,就会生成二进制文件。可以认为二进制文件是存储在内存中的数据的映像,所以二进制文件也称为映像文件。2文本文件文本文件又称为ASCII文件,其中每个字符都以其对应的ASCII码值存储在磁盘上。知识讲解3.文件的分类3.文件分类有整数100000,分别以二进制形式和文本形式存储到文件。二进制形式,仅需4个字节,但内容不够直观文本形式,内容直观,但需要6个字节,且转换需要花费时间知识讲解3.文件的分类了解计算机中文件的相关知识,能够说出文件的指针的概念。学习目标知识讲解3.文件分类4.文件的指针文件的所有操作都必须依靠文件指针完成。要想对文件进行读写操作,首先必须将文件与文件指针建立联系,然后通过文件指针操作相应的文件。FILE*变量名;FILE是系统声明的定义文件指针的结构体,用于保存文件相关信息,如文件名、文件位置、文件大小、文件状态等。3.文件分类知识讲解4.文件的指针标准C语言的FILE定义。3.文件分类知识讲解4.文件的指针typedefstruct{shortlevel; //缓冲区满或空的程度

unsignedflags; //文件状态标志

charfd; //文件描述符

unsignedcharhold; //若无缓冲区不读取字符

shortbsize; //缓冲区的大小

unsignedchar*buffer; //数据传送缓冲区的位置

unsignedchar*curp; //当前读写位置

unsignedistemp; //临时文件指示

shorttoken; //无效检测}FILE; //结构体类型名FILE文件指针定义示例。FILE*fp;定义文件指针fp之后,系统根据FILE结构体分配一段内存空间作为文件信息区,用于存储要读写文件的相应信息。将文件指针与文件关联(调用fopen()函数)。fp=fopen("a.txt");知识讲解4.文件的指针上述代码中,fopen()函数将文件指针fp与a.txt文件关联起来,a.txt文件的相关信息就会存储到指针fp指向的文件信息区。知识讲解4.文件的指针一个文件指针只能关联一个文件,关联多个文件需要定义多个文件指针。知识讲解4.文件的指针掌握文件的打开与关闭方法,能够调用fopen()与fclose()函数打开与关闭文件。学习目标知识讲解3.文件分类5.文件的打开与关闭文件的打开与关闭可以调用fopen()函数与fclose()函数。fopen()函数01FILE*fopen(constchar*filename,constchar*mode);文件的绝对路径,包含路径名和文件的扩展名文件打开模式知识讲解5.文件的打开与关闭fopen()函数打开文件的模式。知识讲解5.文件的打开与关闭打开模式名称描述r/rb只读模式打开一个文本文件或二进制文件,只允许读取数据,若文件不存在,则打开失败,返回NULLw/wb只写模式创建一个文本文件或二进制文件,只允许写入数据,如果文件已存在,则覆盖旧文件a/ab追加模式打开一个文本文件或二进制文件,只允许在文件末尾添加数据,如果文件不存在,则创建新文件知识讲解5.文件的打开与关闭打开模式名称描述r+/rb+读取/更新模式打开一个文本文件或二进制文件,允许进行读取和写入操作,若文件不存在,则打开失败,返回NULLw+/wb+写入/更新模式创建一个文本文件或二进制文件,允许进行读取和写入操作,如果文件已存在,则重写文件a+/ab+追加/更新模式打开一个文本文件或二进制文件,允许进行读取和追加操作,若文件不存在,则创建新文件fopen()函数打开文件示例。FILE*fp;fp=fopen("D:\\test.txt","r");if(fp==NULL) //如果文件打开失败,如不存在test.txt文件,返回值是NULL{ printf("打开失败!\n"); exit(0); //退出程序}知识讲解5.文件的打开与关闭文件的打开与关闭可以调用fopen()函数与fclose()函数。fclose()函数02intfclose(FILE*fp);文件关闭成功返回0,否则返回EOF。知识讲解5.文件的打开与关闭表示打开文件时返回的是文件指针。【案例11-1】打开电子文件巩固前面所学知识,能够利用前面所学知识实现案例11-1。学习目标案例实现定义文件指针,调用fopen()函数打开D盘中的“《史记》摘录笔记.txt”文件。如果文件打开失败,输出打开失败的提示信息,例如“无法打开文件”,然后退出程序。如果文件打开成功,输出打开成功的提示信息,例如“文件打开成功!祝您阅读愉快!”。010203调用fclose()函数关闭文件。041.案例设计案例实现本案例中可以实现的效果图如下。代码实现2.完整代码

【案例11-2】输出文件内容02案例描述语文老师李老师下节课要讲授孟子三则中的《生于忧患,死于安乐》,为了达到更好的教学效果,李老师提前备课,并将课文难点作了注释,整理成了“天将降大任.txt”笔记,提前发给学生进行预习。学生收到文件后,需要打开预习,请编写一个程序,帮助学生打开李老师的笔记文件,将内容输出显示。知识需求输出文件内容文件位置指针定位单字符输出单行输出了解计算机中文件的相关知识,能够说出文件位置指针的概念。学习目标知识讲解3.文件分类1.文件位置指针文件位置指针用于标识当前文件的读写位置,它是真正指向文件内容的指针。每读写一个单位数据,文件位置指针就按顺序向后移动一个位置。读写文件移动文件位置指针文件读取完毕后,文件位置指针指向文件末尾,这个位置用EOF标识。知识讲解3.文件分类1.文件位置指针掌握文件的单行读写函数,能够调用fgets()与fputs()函数实现文件的单行读写。学习目标知识讲解3.文件分类2.单字符读写文件C语言提供了fgetc()和fputc()函数,这两个函数用于对单个字符进行读写操作。fgetc()函数01fgetc()函数用于读取文件中的单个字符。charfgetc(FILE*fp);知识讲解2.单字符读写文件fgetc()函数用法示例。FILE*fp;charch;fp=fopen("hello.txt","r");ch=fgetc(fp); //从文件中读取每个字符while(ch!=EOF) //只要文件没读到结尾,就执行下面的代码{ printf("%c",ch); ch=fgetc(fp);}知识讲解2.单字符读写文件fputc()函数02fputc()函数用于向文件写入一个字符。intfputc(charch,FILE*fp);知识讲解2.单字符读写文件C语言提供了fgetc()和fputc()函数,这两个函数用于对单个字符进行读写操作。fputc()函数用法示例。FILE*fp;inti=0;chararr[]="ILikeCProgram";fp=fopen("hello.txt","w"); //只写的方式,若文件不存在则创建文件while(arr[i]!='\0') //遍历字符数组中的每一个字符{

fputc(arr[i],fp);

//将字符写入文件中 i++; //将字符数组的下标后移1位}知识讲解2.单字符读写文件文件内容较多时,单字符读写文件效率太低,为了提高效率,C语言提供了单行读写文件的函数。01fgets()函数fgets()函数用于从文件中读取一行字符串,或读取指定长度的字符串。char*fgets(char*buf,intmaxCount,FILE*file);存储文件数据的数组的地址读取数据的大小,最多读取maxCount-1个字符要读取的文件知识讲解2.单字符读写文件文件内容较多时,单字符读写文件效率太低,为了提高效率,C语言提供了单行读写文件的函数。01fgets()函数如果当前读取的文件的行中不足maxCount-1个字符,则读取完该行就结束。如果该行(包括最后一个换行符)的字符超过maxCount-1个,则fgets()函数只返回当前行的子串,但是下一次调用fgets()函数会继续读取该行。知识讲解2.单字符读写文件fgets()函数用法示例。FILE*fp; //声明文件指针charstr[100]; //文件数据缓冲区fp=fopen("hello.txt","r"); //打开文件,并将文件和文件指针关联while(!feof(fp)) //判断文件指针是否已指向文件的末尾{ memset(str,0,sizeof(str));

//初始化文件数据缓冲区

fgets(str,sizeof(str),fp);

//按行读取数据

printf("%s",str); //打印文件数据缓冲区中的字符串}知识讲解2.单字符读写文件文件内容较多时,单字符读写文件效率太低,为了提高效率,C语言提供了单行读写文件的函数。02fputs()函数fputs()函数可以将字符串写入文件。intfputs(constchar*str,FILE*file);知识讲解2.单字符读写文件2.单行读写文件fputs()函数用法示例。FILE*fp; //声明文件指针char*str[3]; //定义字符型指针数组inti;str[0]="ILikeCProgram\n"; //字符型指针指向字符串常量的起始地址str[1]="ItIsAmazing\n";str[2]="ItIsInteresting\n";fp=fopen("hello.txt","w");//打开文件,若文件不存在则创建文件for(i=0;i<3;i++)fputs(str[i],fp); //将字符型指针数组str中指针指向的字符串写入文件中知识讲解2.单字符读写文件【案例11-2】输出文件内容巩固前面所学知识,能够利用前面所学知识实现案例11-2。学习目标案例实现12假设文件存储在D盘中,定义文件指针fp,调用fopen()函数打开D盘中的文件“天将降大任.txt”。调用fgets()函数逐行读取文件内容,并将其输出到控制台。2.单行读写文件1.案例设计案例实现本案例中可以实现的效果图如下。代码实现2.单行读写文件2.完整代码

【案例11-3】班级通讯录03【案例11-3】打开电子文件巩固前面所学知识,能够利用前面所学知识实现案例11-3。学习目标案例描述随着新学期的到来,新生陆续到学校报到,为了方便管理班级,辅导员通常会创建一个通讯录,用于存储每个学生的联系方式。本案例要求编写一个程序,帮助辅导员创建班级通讯录,收集学生信息(姓名、手机号码)并存储到文件中。【案例11-3】班级通讯录巩固前面所学知识,能够利用前面所学知识实现案例11-3。学习目标案例实现123456调用fopen()函数以读写方式打开通讯录文件telList.txt。定义字符数组name和tel分别用于存储学生姓名和手机号码。假设班级有5名学生,使用for循环从键盘输入学生信息存储到对应数组。调用fputs()函数将数组中的数据写入文件telList.txt。关闭文件telList.txt。再次调用fopen()函数以只读方式打开telList.txt文件。调用fgets()函数读取telList.txt文件内容输出到控制台。2.单行读写文件1.案例设计案例实现本案例中可以实现的效果图如下。2.单行读写文件2.完整代码案例实现

2.单行读写文件2.完整代码【案例11-4】档案信息存储04案例描述假如你是一个个人信息档案管理员,编写一个程序,完成个人档案信息的输入,并将个人档案信息保存到本地文件中,具体要求如下所示。(1)个人档案信息包括姓名、性别、年龄、地址、电话。(2)从键盘输入个人档案信息,然后将其保存到本地文件。知识需求结构体存储学生信息结构体信息写入文件数据块的读写fread()函数与fwrite()函数掌握以二进制形式读写文件的方法,能够调用fread()函数实现以二进制形式读文件。学习目标知识讲解3.文件分类1.fscanf()函数1.fread()函数fread()函数用于以二进制形式读取文件。size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream);存储读取的文件数据读取元素的单位大小读取元素个数读取成功则返回读取数据的大小。读取错误返回0知识讲解1.fscanf()函数掌握以指定的格式读写文件的方法,能够调用fprintf()函数实现以指定的格式写文件。学习目标知识讲解3.文件分类2.fprintf()函数size_tfwrite(constvoid*ptr,size_tsize,size_tnmemb,FILE*stream);指向待写入数据的指针待写入的数据块待写入的数据块个数知识讲解fwrite()函数用于以二进制的形式将数据写入文件。3.文件分类2.fprintf()函数【案例11-4】档案信息存储巩固前面所学知识,能够利用前面所学知识实现案例11-4。学习目标案例实现01030402定义结构体structRecord用于存储个人信息。定义结构体数组,在for语句中调用scanf()函数获取从键盘输入的个人档案信息。每获取一份档案信息,就调用fwrite()函数将数据写入本地文件。写入完毕之后,重新打开文件。调用fread()函数读取文件,验证输入的信息是否正确无误。2.单行读写文件1.案例设计案例实现本案例中可以实现的效果图如下。2.单行读写文件2.完整代码案例实现2.单行读写文件2.完整代码

【案例11-5】批阅数学试卷05案例描述假如某小学一个班级的数学老师在教学一段时间后,要考核一下学生的学习效果,就出了10道100以内的加法题,每题10分,通过考试结果判断学生的学习情况。请编写一个程序,帮助数学老师自动出题、核对答案并统计得分。知识需求学生作答试卷正确答案文件读取两个文件结果进行比对试卷型文件,读取要按格式fscanf()函数fprintf()函数掌握以指定的格式读写文件的方法,能够调用fscanf()实现以指定的格式读文件。学习目标知识讲解3.文件分类1.fscanf()函数fscanf()函数用于从文件中格式化读取数据。intfscanf(FILE*stream,constchar*format,...);以什么格式读取文件中数据fscanf()函数用法示例。charstr1[10],str2[10];FILE*fp;fp=fopen("hello.txt","r");fscanf(fp,"%s%s",str1,str2);fclose(fp);printf("%s\n",str1);printf("%s\n",str2);fscanf()函数知识讲解1.fscanf()函数掌握以指定的格式读写文件的方法,能够调用fprintf()实现以指定的格式写文件。学习目标知识讲解3.文件分类2.fprintf()函数fprintf()函数将数据格式化写入文件。intfprintf(FILE*stream,constchar*format,...);fprintf()函数用法示例。FILE*fp;fp=fopen("hello.txt","w");//将格式化的字符串输出到文件中fprintf(fp,"Iama%s,Iam%dyearsold.","student",18);fclose(fp); //关闭文件,释放资源知识讲解3.文件分类2.fprintf()函数【案例11-5】批阅数学试卷巩固前面所学知识,能够利用前面所学知识实现案例11-5。学习目标案例实现010203将学生作答结果写入文件resul.txt文件。将正确答案写入answer.txt。分别读取result.txt文件和answer.txt文件中的内容,如果两个对应答案相同,则表明学生作答结果正确,加10分,最后输出最终得分。2.单行读写文件1.案例设计案例实现本案例中可以实现的效果图如下。代码实现2.单行读写文件2.完整代码

【案例11-6】图书管理系统06【案例11-6】图书管理系统巩固前面所学知识,能够利用前面所学知识实现案例11-6。学习目标案例描述本案例要求编写程序实现一个简单的图书管理系统,该系统可实现图书信息的录入、浏览、查询、修改、删除和保存。2.单行读写文件1.案例设计案例实现1234图书信息输入函数Insert():实现增加数据的功能,其实质是为链表添加节点本案例的每个功能将被模块化为一个函数,在主函数中根据用户的选择,调用对应的功能。图书信息浏览函数Print():实现图书信息的输出,其实质为遍历链表。图书信息查询函数Search():能根据用户输入的信息,查找链表中是否存在相应记录,并将查找结果输出。图书信息修改函数Update():能根据用户输入的信息,找到对应记录,并修改记录中的信息。2.单行读写文件1.案例设计案例实现5678图书信息删除函数Delete():借助查询功能,查找链表中的数据,并将找到的数据对应的节点从链表中删除。本案例的每个功能将被模块化为一个函数,在主函数中根据用户的选择,调用对应的功能。图书信息保存函数Save():能将链表中的数据写入文件中。创建书单函数CreateBooksList():创建链表来存储图书信息;上述6个函数的实现都依赖于链表。菜单函数menu():可展示菜单。菜单是用户与程序交互的接口。2.单行读写文件1.案例设计案例实现本案例中可以实现的效果图如下。主界面2.单行读写文件2.完整代码案例实现本案例中可以实现的效果图如下。图书信息输入2.单行读写文件2.完整代码案例实现本案例中可以实现的效果图如下。图书信息浏览2.单行读写文件2.完整代码案例实现本案例中可以实现的效果图如下。图书信息查询2.单行读写文件2.完整代码案例实现本案例中可以实现的效果图如下。图书信息修改2.单行读写文件2.完整代码案例实现本案例中可以实现的效果图如下。图书信息删除2.单行读写文件2.完整代码案例实现本案例中可以

温馨提示

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

最新文档

评论

0/150

提交评论