欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    教学课件C语言程序设计案例教程第10章 文件.ppt

    • 资源ID:25365402       资源大小:10.30MB        全文页数:54页
    • 资源格式: PPT        下载积分:30金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要30金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    教学课件C语言程序设计案例教程第10章 文件.ppt

    PPT模板下载:/moban/ 行业PPT模板:/hangye/ 节日PPT模板:/jieri/ PPT素材下载:/sucai/PPT背景图片:/beijing/ PPT图表下载:/tubiao/ 优秀PPT下载:/xiazai/ PPT教程: /powerpoint/ Word教程: /word/ Excel教程:/excel/ 资料下载:/ziliao/ PPT课件下载:/kejian/ 范文下载:/fanwen/ 试卷下载:/shiti/ 教案下载:/jiaoan/ 字体下载:/ziti/ 教学课件C语言程序设计案例教程第10章 文件C语言程序设计案例教程 C语言程序设计案例教程 大连理工大学出版社第10 章 文件v教学目的:教学目的:通过本章的学习,要求能理解文本文件和二进制文件通过本章的学习,要求能理解文本文件和二进制文件的概念,能熟练使用文件的读写函数对文件进行一系列的的概念,能熟练使用文件的读写函数对文件进行一系列的操作,理解文件的定位和文件的出错检测等,能够利用本操作,理解文件的定位和文件的出错检测等,能够利用本章的知识点进行一些简单的课程设计,为后续课程中系统章的知识点进行一些简单的课程设计,为后续课程中系统的开发奠定基础。的开发奠定基础。 C语言程序设计案例教程 大连理工大学出版社第10 章 文件v本章内容本章内容 文件操作的文件操作的C C程序引例程序引例文件的打开与关闭文件的打开与关闭文件的定位文件的定位文件的读写文件的读写字符串读写函数字符串读写函数其他读写函数其他读写函数文件的出错检测文件的出错检测: ferror: ferror和和 clearerrclearerr函数函数文件随机定位函数文件随机定位函数流式文件的定位函数流式文件的定位函数综合实训综合实训字符读写函数字符读写函数 数据读写函数数据读写函数字符串读写函数字符串读写函数文件头定位函数文件头定位函数判断文件结束函数判断文件结束函数feoffeof C语言程序设计案例教程 大连理工大学出版社第10 章 文件v重点和难点重点和难点重点:重点: (1) 文件的打开与关闭文件的打开与关闭 (2) 文件的读写文件的读写 (3) 文件的定位文件的定位 (4) 文件的出错检测文件的出错检测 难点:难点: (1) 文件的读写文件的读写 (2) 文件的出错检测文件的出错检测 C语言程序设计案例教程 大连理工大学出版社10.1 文件操作的C程序实例 文件操作引例:文件操作引例:【例例10.1】编写程序完成:将一个班级学生的期末考试编写程序完成:将一个班级学生的期末考试信息信息(学号、姓名、总分学号、姓名、总分)存入磁盘文件存入磁盘文件stu.txt中,同时统计中,同时统计总分在总分在550分以上的优秀学生信息,并将优秀学生的名单输分以上的优秀学生信息,并将优秀学生的名单输出到屏幕上。出到屏幕上。 C语言程序设计案例教程 大连理工大学出版社假设班级目前的学生数为假设班级目前的学生数为30,则程序代码如下:,则程序代码如下:/*源文件名:源文件名:Li10_1.c功能:统计一个班级的期末考试信息。功能:统计一个班级的期末考试信息。*/#include #define N 30/*定义班级中学生的人数定义班级中学生的人数*/void main()int i;FILE *fp;FILE *fpp;struct stu char name20; int number;10.1 文件操作的C程序实例 C语言程序设计案例教程 大连理工大学出版社10.1 文件操作的C程序实例 int score;studN/*打开或建立打开或建立stu.txt文件,只允许写入数据文件,只允许写入数据*/fp=fopen(stu.txt,w);for(i=0;iN;i+)printf(请输入第请输入第%d个学生的信息:个学生的信息:n,i+1);printf(姓名:姓名:);scanf(%s,studi.name);printf(学号:学号:);scanf(%d,&studi.number);printf(总分:总分:);scanf(%d,&studi.score);fprintf(fp, %s,%d,%dn,studi.name, studi.number, studi.score); C语言程序设计案例教程 大连理工大学出版社10.1 文件操作的C程序实例 close(fp);/*关闭关闭stu.txt文件文件*/*打开已有的打开已有的stu.txt文件,只允许读取数据文件,只允许读取数据*/fpp=fopen(stu.txt,r);for(i=0;i550.0) printf(%s(学号:学号:%d)是个优秀的学生。是个优秀的学生。n,studi.name,studi.number);fclose(fpp);/*关闭关闭stu.txt文件文件*/getch(); C语言程序设计案例教程 大连理工大学出版社10.1 文件操作的C程序实例 程序首先将程序首先将30个学生的信息存放到文件个学生的信息存放到文件stu.txt中,然后对中,然后对存放在存放在stu.txt中的学生的总分进行统计,并将总分在中的学生的总分进行统计,并将总分在550分以上分以上的学生的名单输出。的学生的名单输出。以输入以输入5个个(假设此时假设此时N的值为的值为5)学生的信息为例,程序的运学生的信息为例,程序的运行情况为:行情况为: 请输入第请输入第1个学生的信息:个学生的信息:姓名:张三姓名:张三学号:学号:1总分:总分:368请输入第请输入第2个学生的信息:个学生的信息:姓名:李四姓名:李四学号:学号:2总分:总分:479 C语言程序设计案例教程 大连理工大学出版社10.1 文件操作的C程序实例 请输入第请输入第3个学生的信息:个学生的信息:姓名:王五姓名:王五学号:学号:3总分:总分:598请输入第请输入第4个学生的信息:个学生的信息:姓名:赵六姓名:赵六学号:学号:4总分:总分:564请输入第请输入第5个学生的信息:个学生的信息:姓名:刘七姓名:刘七学号:学号:5总分:总分:321王五王五(学号:学号:3)是个优秀的学生。是个优秀的学生。赵六赵六(学号:学号:4)是个优秀的学生。是个优秀的学生。 C语言程序设计案例教程 大连理工大学出版社10.1 文件操作的C程序实例 此时如果打开文件此时如果打开文件stu.txt,则,则5个学生的信息清单按照输入个学生的信息清单按照输入的顺序存放在的顺序存放在stu.txt文件中,如图文件中,如图10-1所示。所示。图10.1 C语言程序设计案例教程 大连理工大学出版社10.1 文件操作的C程序实例 下面介绍几个跟文件相关的概念:下面介绍几个跟文件相关的概念:n文件是一组相关数据的集合。在文件是一组相关数据的集合。在C程序设计中,按文件的内程序设计中,按文件的内容可以分为两类:一类是程序文件,它是程序得源代码;另一容可以分为两类:一类是程序文件,它是程序得源代码;另一类是数据文件,它是程序运行时需要的原始数据及输出的结果。类是数据文件,它是程序运行时需要的原始数据及输出的结果。这两类文件都保存在磁盘上,随时可以使用。程序文件的创建这两类文件都保存在磁盘上,随时可以使用。程序文件的创建和使用已经在前面各章介绍了,本章主要介绍数据文件的创建和使用已经在前面各章介绍了,本章主要介绍数据文件的创建和使用。和使用。n按数据的存储形式,数据文件可以分为文本文件和二进制文按数据的存储形式,数据文件可以分为文本文件和二进制文件两类。件两类。 C语言程序设计案例教程 大连理工大学出版社10.1 文件操作的C程序实例 n文本文件:也称文本文件:也称ASCII文件,是一种字符流文件。文本文件文件,是一种字符流文件。文本文件的优点是可以直接阅读,而且的优点是可以直接阅读,而且ASCII码标准统一,使文件易码标准统一,使文件易于移植,其缺点是输入、输出都要进行转换,效率低。于移植,其缺点是输入、输出都要进行转换,效率低。n二进制文件:二进制文件中的数据是按其在内存中的存储形二进制文件:二进制文件中的数据是按其在内存中的存储形式存放的。式存放的。n流:流是一个逻辑设备,具有诸多相同的行为。在流:流是一个逻辑设备,具有诸多相同的行为。在C语言中语言中有两种性质的流:文字流和二进制。有两种性质的流:文字流和二进制。n顺序文件:可以进行顺序存取的文件称为顺序文件。顺序文件:可以进行顺序存取的文件称为顺序文件。n随机文件:可以进行随机存取的文件称为随机文件。随机文件:可以进行随机存取的文件称为随机文件。nC语言支持的文件存取方式有两种:顺序存取和随机存取。语言支持的文件存取方式有两种:顺序存取和随机存取。随机存取也称直接存取。随机存取也称直接存取。 C语言程序设计案例教程 大连理工大学出版社10.2 文件的打开与关闭 10.2.1文件的打开 由于文件的打开与关闭都是利用系统函数来实现的,因由于文件的打开与关闭都是利用系统函数来实现的,因此,在编写有关文件的程序时,应该在其中包含此,在编写有关文件的程序时,应该在其中包含“stdio.h”头文件。头文件。文件打开函数文件打开函数fopen用来打开一个文件,其调用的一般用来打开一个文件,其调用的一般形式为:形式为:文件指针名文件指针名=fopen(文件名,使用文件方式文件名,使用文件方式);其中:其中:“文件指针名文件指针名”必须是被说明为必须是被说明为FILE类型的指针类型的指针变量;变量;“文件名文件名”是被打开文件的文件名;是被打开文件的文件名; C语言程序设计案例教程 大连理工大学出版社10.2 文件的打开与关闭 10.2.1文件的打开 文件名通常是文件变量或文件数组;文件名通常是文件变量或文件数组;“使用文件方式使用文件方式”是指文是指文件的类型和操作要求。文件的使用方式共有件的类型和操作要求。文件的使用方式共有12种,表种,表10.1给给出了文本文件的符号和意义。出了文本文件的符号和意义。 文件使用方式文件使用方式代表的含义代表的含义r打开一个已有的文本文件,只允许读取数据打开一个已有的文本文件,只允许读取数据w打开或建立一个文本文件,只允许写入数据打开或建立一个文本文件,只允许写入数据at打开或建立一个文本文件,只允许写入数据打开或建立一个文本文件,只允许写入数据rt+打开一个已有的文本文件,允许读和写打开一个已有的文本文件,允许读和写at+打开一个已有的文本文件,允许读和写打开一个已有的文本文件,允许读和写wt+打开一个已有的文本文件,允许读和写打开一个已有的文本文件,允许读和写表10-1文本文件的符号及其含义 以上六种方式是针对“文本文件”类型 C语言程序设计案例教程 大连理工大学出版社10.2 文件的打开与关闭 10.2.1文件的打开 文件使用方式文件使用方式代表的含义代表的含义rb打开一个已存在的二进制文件,只允许读数据打开一个已存在的二进制文件,只允许读数据 wb打开或建立一个二进制文件,只允许写数据打开或建立一个二进制文件,只允许写数据 ab 打开一个二进制文件,并在文件末尾追加数据打开一个二进制文件,并在文件末尾追加数据 rb+打开一个二进制文件,允许读和写打开一个二进制文件,允许读和写 wb+打开或建立一个二进制文件,允许读和写打开或建立一个二进制文件,允许读和写 ab+ 打开一个二进制文件,允许读或在文件末追加数据打开一个二进制文件,允许读或在文件末追加数据 表10-2二进制文件的符号及其含义 C语言程序设计案例教程 大连理工大学出版社10.2 文件的打开与关闭 10.2.1文件的打开 可以看出,上面两个表的作用基本上是相同的,唯一的可以看出,上面两个表的作用基本上是相同的,唯一的区别是表区别是表10-2增加了一个表示二进制的字符增加了一个表示二进制的字符“b”。其中,文。其中,文件使用方式由件使用方式由r、w、a、t、b和和+六个字符组成,各字符的六个字符组成,各字符的含义如表所示。含义如表所示。 字母字母代表代表含义含义rread读取数据读取数据wWrite写入数据写入数据aApend追加数据追加数据tText文本文件,可省略文本文件,可省略 不写不写bbinary二进制文件二进制文件+可读可写可读可写表10-3 文件使用方式中的字符及其含义 C语言程序设计案例教程 大连理工大学出版社10.2 文件的打开与关闭 10.2.1文件的打开 对上表做以下补充说明:对上表做以下补充说明: 1. 程序中凡是用程序中凡是用“r”打开一个文件时,表明该文件必须已经打开一个文件时,表明该文件必须已经存在,且只能从该文件读出数据。存在,且只能从该文件读出数据。 2用用“w”打开的文件也只能向该文件写入数据。若打开的文打开的文件也只能向该文件写入数据。若打开的文件不存在,则按照指定的文件名建立该文件,若打开的文件已件不存在,则按照指定的文件名建立该文件,若打开的文件已经存在,则将该文件删除,重建一个新文件。使用时要特别注经存在,则将该文件删除,重建一个新文件。使用时要特别注意这一点。意这一点。 3. 如果要向一个已经存在的文件后面追加新的信息,那只能如果要向一个已经存在的文件后面追加新的信息,那只能用用“a”方式打开文件。但此时该文件必须是存在的,否则将会方式打开文件。但此时该文件必须是存在的,否则将会出错。出错。 C语言程序设计案例教程 大连理工大学出版社10.2 文件的打开与关闭 10.2.1文件的打开 4在打开一个文件之前,应该定义文件型指针,以便在打开一个文件之前,应该定义文件型指针,以便接收函数接收函数fopen返回的地址。如果出错,返回的地址。如果出错,fopen将返回一个将返回一个空指针空指针NULL。在程序中可以用这一信息来判别是否完成打开。在程序中可以用这一信息来判别是否完成打开文件的工作,并做相应的处理。文件的工作,并做相应的处理。例如:例如: if(fp=fopen(“file1”,”rb”)= =NULL) printf(“n error on open file1”); getch( ); exit(1); C语言程序设计案例教程 大连理工大学出版社10.2 文件的打开与关闭 10.2.1文件的打开 该程序段表示:如果返回的指针为空,则不能打开当前目录该程序段表示:如果返回的指针为空,则不能打开当前目录下的文件下的文件“file1”,同时给出错误提示信息,同时给出错误提示信息“error on open file1”。程序中的。程序中的getch()函数的功能是从键盘输入函数的功能是从键盘输入一个字符,该字符不在屏幕上显示。其实一个字符,该字符不在屏幕上显示。其实getch()在这里的在这里的作用是停留等待,只有当用户从键盘敲任意键时,程序才继续作用是停留等待,只有当用户从键盘敲任意键时,程序才继续执行,我们可以利用这个等待时间来阅读出错提示,找到错误执行,我们可以利用这个等待时间来阅读出错提示,找到错误原因。当敲任意键后,执行语句原因。当敲任意键后,执行语句“exit(1);”,从而退出程序。,从而退出程序。 C语言程序设计案例教程 大连理工大学出版社10.2 文件的打开与关闭 文件一旦使用完毕,应使用关闭文件函数文件一旦使用完毕,应使用关闭文件函数fclose把文件把文件关闭,以避免文件数据丢失等情况的发生。关闭,以避免文件数据丢失等情况的发生。 fclose函数调用的一般形式为:函数调用的一般形式为: fclose(FILE *fp);其中,参数其中,参数fp是文件型指针,通过是文件型指针,通过fopen()函数已经获得,它函数已经获得,它指向某个打开的文件。例如指向某个打开的文件。例如 fclose(fp); 上述语句的含义是关闭上述语句的含义是关闭fp所指向的文件,同时自动释放所指向的文件,同时自动释放分配给文件的内存缓冲区。当正常完成关闭文件的操作时,分配给文件的内存缓冲区。当正常完成关闭文件的操作时,fclose函数的返回值为函数的返回值为0,表示已正确关闭指定的文件;如返,表示已正确关闭指定的文件;如返回非回非0值则表示有错误发生。值则表示有错误发生。 10.2.2文件的关闭 C语言程序设计案例教程 大连理工大学出版社10.2 文件的打开与关闭 10.2.2文件的关闭 【例例10.2】文件的打开与关闭应用举例。文件的打开与关闭应用举例。 /*源文件名:源文件名:Li10_3.c功能:文件的打开与关闭。功能:文件的打开与关闭。*/#includevoid main() FILE *fp; /*定义一个文件指针定义一个文件指针*/if(fp=fopen(C:STUDENTch01_01ch01_01.c,rb )=NULL)printf(file can not open!n);exit(1);elseprintf(The file succeed open!n);fclose(fp); C语言程序设计案例教程 大连理工大学出版社10.2 文件的打开与关闭 10.2.2文件的关闭 说明:在书写时,要严格按照格式书写,说明:在书写时,要严格按照格式书写,例如:将路径写成例如:将路径写成“C:STUDENTch01_01ch01_01.c”是不正确的,是不正确的,这一点要特别注意。路径写成这一点要特别注意。路径写成“C:STUDENTch01_01ch01_01.c”才是正确才是正确的,这里的的,这里的“”的含义是:第一个的含义是:第一个“”代表转义字符,第代表转义字符,第二个二个“”才是字符本身。才是字符本身。 C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写文件的读写操作由文件读写函数完成,常用的读写函数文件的读写操作由文件读写函数完成,常用的读写函数有有fputc、fgetc、fread、fwrite、fputs、fgets、fprintf、fscanf、putw、getw等。等。10.3.1 字符读写函数读字符函数读字符函数fgetc函数函数写字符函数写字符函数fputc函数函数 C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写 10.3.1 字符读写函数读字符函数读字符函数fgetc函数函数:fgetc函数用来从指定的文件读入一个字符,该文件必须是读函数用来从指定的文件读入一个字符,该文件必须是读或写方式打开的。或写方式打开的。fgetc函数的调用格式如下:函数的调用格式如下: ch=fgetc(fp); 其中其中fp为文件类型指针,为文件类型指针,ch为字符变量。为字符变量。fgetc函数函数返回的字符赋给字符变量返回的字符赋给字符变量ch。如果在执行。如果在执行fgetc函数读字符函数读字符时遇到文件结束符,则该函数返回一个结束标志时遇到文件结束符,则该函数返回一个结束标志EOF(-1)。如果想从磁盘文件顺序读入字符并在屏幕上显示出来,可以用如果想从磁盘文件顺序读入字符并在屏幕上显示出来,可以用以下的程序段:以下的程序段: C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写 10.3.1 字符读写函数 ch=fgetc(fp); while(ch!=EOF) putchar(ch); ch=fgetc(fp); C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写 10.3.1 字符读写函数写字符函数写字符函数fputc函数函数: fputc函数用来将一个字符写入指定的文件中,该函数的调函数用来将一个字符写入指定的文件中,该函数的调用格式为:用格式为:fputc(ch,fp); 其中其中ch可以是一个字符常量,也可以是一个字符变量。可以是一个字符常量,也可以是一个字符变量。fp是文件指针变量。该函数的作用是将字符是文件指针变量。该函数的作用是将字符(ch的值的值)输出到输出到fp所指定的文件中去。所指定的文件中去。fputc函数也带回一个值,如果输出成功,函数也带回一个值,如果输出成功,则返回值就是输出的字符,如果输出失败,则返回则返回值就是输出的字符,如果输出失败,则返回EOF(-1)。 C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写写数据函数写数据函数fwrite函数函数 读数据函数读数据函数fread函数函数 10.3.2 数据读写函数 C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写 10.3.2 数据读写函数写数据函数写数据函数fwrite函数函数:写数据块函数调用的一般形式为:写数据块函数调用的一般形式为:fwrite(buffer,size,n,fp);其中各个参数的含义及说明如表其中各个参数的含义及说明如表10.4所示。所示。 参数参数含义含义说明说明 buffer是一个字符型指针,它表示存放输出数据是一个字符型指针,它表示存放输出数据的变量地址或数组首地址。的变量地址或数组首地址。size是一个无符号整型,表示数据块的字节数是一个无符号整型,表示数据块的字节数n无符号整型,表示要读写的数据块块数无符号整型,表示要读写的数据块块数每个数据是每个数据是size个字个字节节 fp表示文件指针表示文件指针表10-4 fwrite函数中各个参数的含义及说明 C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写 10.3.2 数据读写函数读数据函数读数据函数fread函数函数:读数据块函数调用的一般形式为:读数据块函数调用的一般形式为: fread(buffer,size,n,fp); 其中的其中的buffer是一个字符型指针,表示存放读入数据的是一个字符型指针,表示存放读入数据的变量地址或数组首地址。变量地址或数组首地址。size、n、fp的含义见上表。例如:的含义见上表。例如:fread(a,4,8,fp); 上述语句的含义是从上述语句的含义是从fp所指的文件中,每次读所指的文件中,每次读4个字节,个字节,也就是把一个实数送入实数数组也就是把一个实数送入实数数组a中,连续读中,连续读8次,即读入次,即读入8个实数并送到数组个实数并送到数组a中。中。 C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写 字符串读写函数处理的文件类型主要是文本文件,字符串读写函数处理的文件类型主要是文本文件,分为读字符串函数和写字符串函数。分为读字符串函数和写字符串函数。写字符串函数写字符串函数fputs 读字符串函数读字符串函数fgets10.3.3 字符串读写函数 C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写 10.3.3 字符串读写函数写字符串函数写字符串函数fputs :puts函数的功能是向指定的文件写入一个字符串,其调用形函数的功能是向指定的文件写入一个字符串,其调用形式为:式为: fputs(字符串字符串,文件指针文件指针); 字符串可以是字符串常量,也可以是字符数组名或指针变字符串可以是字符串常量,也可以是字符数组名或指针变量,例如:量,例如:fputs(Human,fp); 上述语句的含义是把字符串上述语句的含义是把字符串“Human”写入写入fp所指的文件所指的文件之中。之中。 C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写 10.3.3 字符串读写函数 读字符串函数读字符串函数fgets:fgets函数的功能是从指定的文件中读一个字符串到字符数组中,其调函数的功能是从指定的文件中读一个字符串到字符数组中,其调用形式为:用形式为:fgets (str,n,fp);函数中的参数函数中的参数str是字符数组名;是字符数组名;n是一个正整数,表示从文件中读出是一个正整数,表示从文件中读出的字符串不超过的字符串不超过n-1个字符。在向字符数组读入的最后一个字符后加上个字符。在向字符数组读入的最后一个字符后加上字符串结束标志字符串结束标志0。如果在读。如果在读n-1个字符之前遇到换行符或个字符之前遇到换行符或EOF,读入工作结束。例如:读入工作结束。例如:fgets (ch,50,fp);上述语句的含义是从上述语句的含义是从fp所指的文件中读出所指的文件中读出49个字符送入字符数组个字符送入字符数组ch中。中。 C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写 10.3.4 格式化读写函数 文件的格式化读写函数和以前学习的格式化输入文件的格式化读写函数和以前学习的格式化输入/输出函输出函数很类似,对于格式化输入数很类似,对于格式化输入/输出函数,只能和标准输入输出函数,只能和标准输入/输出输出设备文件打交道;而有了格式化的读写函数之后,不但可以处设备文件打交道;而有了格式化的读写函数之后,不但可以处理标准设备的输入理标准设备的输入/输出输出,而且可以处理磁盘文件中的数据。而且可以处理磁盘文件中的数据。 格式化写函数格式化写函数fprintf 格式化读函数格式化读函数fscanf C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写 10.3.4 格式化读写函数 格式化写函数格式化写函数fprintf;格式化写函数格式化写函数fprintf的调用格式为:的调用格式为:fprintf(文件指针文件指针,格式字符串格式字符串,输出列表输出列表);例如:例如:fprintf(fp, %d%c,j,ch); 上述语句的作用是将整型变量上述语句的作用是将整型变量j和字符型变量和字符型变量ch的值按的值按%d和和%c的格式输出到的格式输出到fp所指的文件上。所指的文件上。 C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写 10.3.4 格式化读写函数 格式化读函数格式化读函数fscanf:格式化读函数格式化读函数fscanf的调用格式为:的调用格式为:fscanf (文件指针文件指针,格式字符串格式字符串,输入列表输入列表);例如:例如: fscanf (fp, %d%s,&i,str);若此时若此时fp所指的文件中存放着以下的数据:所指的文件中存放着以下的数据: 6happynewyear 上 述 语 句 的 作 用 是 将上 述 语 句 的 作 用 是 将 6 赋 给 整 型 变 量赋 给 整 型 变 量 i , 将, 将 “happynewyear” 赋给字符型数组赋给字符型数组str。 C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写10.3.5 其他读写函数 除了上面介绍的读写函数外,大部分的除了上面介绍的读写函数外,大部分的C语言编译系语言编译系统还提供了对磁盘文件读写一个字统还提供了对磁盘文件读写一个字(整数整数)的函数的函数putw和和getw。 但但putw和和getw并不是并不是ANSI C标准定义的函数,所标准定义的函数,所以如果所用的以如果所用的C语言编译系统不提供这两个函数,可以按如下语言编译系统不提供这两个函数,可以按如下的形式自定义这两个函数。的形式自定义这两个函数。 putw函数的定义函数的定义 getw函数的定义函数的定义 C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写 10.3.5 其他读写函数putw函数的定义函数的定义:putw(int i,FILE *fp)char *s;s=&i;putc(s0,fp);puts(s1,fp);return (i); C语言程序设计案例教程 大连理工大学出版社10.3 文件的读写 10.3.5 其他读写函数getw函数的定义函数的定义 :getw(FILE *fp) char *s;int i;s=&i;s0=getc(fp);s1=getc(fp);return (i);例如:例如:putw(200,fp);上述语句的功能是将整数上述语句的功能是将整数200输出到输出到fp所指向的文件中。所指向的文件中。 C语言程序设计案例教程 大连理工大学出版社10.4 文件的定位 前面介绍的对文件的读写方式都是顺序读写,也就是读前面介绍的对文件的读写方式都是顺序读写,也就是读写文件只能从头开始,顺序读写各个数据。但在实际问题中写文件只能从头开始,顺序读写各个数据。但在实际问题中常常要求只读写文件中某一指定的部分。为了解决这个问题,常常要求只读写文件中某一指定的部分。为了解决这个问题,C语言引入了随机读写的概念。所谓语言引入了随机读写的概念。所谓“随机读写随机读写”是将文件是将文件内部的位置指针移动到需要读写的位置后再进行读写,这种内部的位置指针移动到需要读写的位置后再进行读写,这种读写称为随机读写。实现随机读写的关键是按要求移动位置读写称为随机读写。实现随机读写的关键是按要求移动位置指针,这称为文件的指针,这称为文件的“定位定位”。 移动文件内部位置指针的函数主要有两个,即移动文件内部位置指针的函数主要有两个,即rewind函函数和数和fseek函数。函数。 C语言程序设计案例教程 大连理工大学出版社10.4 文件的定位 10.4.1 文件头定位函数 当读取了文件中若干个数据后,又要从头读取数据,这当读取了文件中若干个数据后,又要从头读取数据,这时就需要将文件内部指针重新指向文件头,时就需要将文件内部指针重新指向文件头,C语言提供的文语言提供的文件头定位函数件头定位函数rewind就可以将文件指针重新指定到文件头。就可以将文件指针重新指定到文件头。该函数的调用格式为:该函数的调用格式为:rewind(文件指针文件指针); 其功能是把文件内部的位置指针移到文件开头,如果定位其功能是把文件内部的位置指针移到文件开头,如果定位成功,返回成功,返回0;否则,返回非;否则,返回非0。 C语言程序设计案例教程 大连理工大学出版社10.4.2 文件随机定位函数10.4 文件的定位 前面学习的文件读写函数主要是用来读写顺序文件的。前面学习的文件读写函数主要是用来读写顺序文件的。例如:如果要读取文件中的第例如:如果要读取文件中的第6个数据,则打开文件后必须先个数据,则打开文件后必须先读取前读取前5个数据后,在读取个数据后,在读取1个数据才是所需要的数据。而文个数据才是所需要的数据。而文件随机定位函数可以使文件内部位置指针直接指向第件随机定位函数可以使文件内部位置指针直接指向第6个数据,个数据,在读取当前一个数据就可以。在读取当前一个数据就可以。 fseek函数用来移动文件内部位置指针,其调用形式为:函数用来移动文件内部位置指针,其调用形式为: fseek(文件指针文件指针,位移量位移量,起始点起始点); C语言程序设计案例教程 大连理工大学出版社10.4 文件的定位 10.4.2 文件随机定位函数 n“文件指针文件指针”指向被移动的文件。指向被移动的文件。n “位移量位移量”表示移动的字节数,要求位移量是表示移动的字节数,要求位移量是 long型数据,型数据,以便在文件长度大于以便在文件长度大于64KB时不会出错。当用常量表示位移量时不会出错。当用常量表示位移量时,要求加后缀时,要求加后缀“L”。n “起始点起始点”表示从何处开始计算位移量,表示从何处开始计算位移量,C语言规定的起语言规定的起始点有三种:文件首、当前位置和文件尾,表示方法可以用始点有三种:文件首、当前位置和文件尾,表示方法可以用下表来说明。下表来说明。 C语言程序设计案例教程 大连理工大学出版社10.4 文件的定位 10.4.2 文件随机定位函数 起始点起始点表示符号表示符号数字表示数字表示文件首文件首SEEK_SET0当前位置当前位置SEEK_CUR1文件末尾文件末尾SEEK_END2表10-5起始点的表示方法例如:例如:fseek(fp,200L,0); 上述语句的功能是把位置指针移到距文件首上述语句的功能是把位置指针移到距文件首200个字节处。个字节处。 C语言程序设计案例教程 大连理工大学出版社10.4 文件的定位用用ftell()函数可以返回文件指针的当前位置。其调用格式为:函数可以返回文件指针的当前位置。其调用格式为:ftell(fp); 该函数的返回值为长整型数,表示相对于文件头的字节数,出错时返该函数的返回值为长整型数,表示相对于文件头的字节数,出错时返回回-1L。 例如:例如: long i; if(i=ftell(fp) =-1L) printf( A file error has occurred at %ld.n,i);上述程序段可以通知用户在文件的什么位置出现了文件错误。上述程序段可以通知用户在文件的什么位置出现了文件错误。10.4.3 流式文件的定位函数 C语言程序设计案例教程 大连理工大学出版社10.4 文件的定位 程序从一个磁盘文件中逐个读取字符并输出到屏幕上显程序从一个磁盘文件中逐个读取字符并输出到屏幕上显示,在示,在while循环中常以循环中常以EOF作为文件结束标志。这种以作为文件结束标志。这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中作为文件结束标志的文件,必须是文本文件。在文本文件中数据都是以字符的数据都是以字符的ASCII代码值的形式存放。我们知道,代码值的形式存放。我们知道,ASCII代码值的范围是代码值的范围是0255,不可能出现,不可能出现-1,因此可以用,因此可以用EOF作为文件结束标志。作为文件结束标志。 10.4.4 判断文件结束函数feof C语言程序设计案例教程 大连理工大学出版社10.4 文件的定位 10.4.4 判断文件结束函数feof 当把数据以二进制形式存放到文件中时,就会有当把数据以二进制形式存放到文件中时,就会有-1值的值的出现,此时不能采用出现,此时不能采用EOF作为二进制文件的结束标志。为解作为二进制文件的结束标志。为解决这一问题,决这一问题,ANSI C提供了提供了feof函数,用来判断文件是否结函数,用来判断文件是否结束。如果遇到文件结束,函数束。如果遇到文件结束,函数feof(fp)的值为的值为1,否则为,否则为0。feof函数既可用以判断二进制文件是否结束,也可用以判断函数既可用以判断二进制文件是否结束,也可用以判断文本文件是否结束。文本文件是否结束。 C语言程序设计案例教程 大连理工大学出版社10.5 文件的出错检测 C标准提供了标准提供了ferror和和clearerr等函数用来检测输入等函数用来检测输入/输输出函数调用中的错误。出函数调用中的错误。 10.5.1 ferror函数 在调用各种输入在调用各种输入/输出函数时,除了函数本身的返回值输出函数时,除了函数本身的返回值可以判断调用是否出错外,还可以用可以判断调用是否出错外,还可以用ferror函数进行测试。函数进行测试。ferror函数的调用格式为:函数的调用格式为: ferror(fp); 其中其中fp是指向文件的指针,当是指向文件的指针,当ferror函数的返回值为非函数的返回值为非0时,表示出错;当返回值为时,表示出错;当返回值为0时,表示没有发生错误。时,表示没有发生错误。 C语言程序设计案例教程 大连理工大学出版社10.5 文件的出错检测 10.5.1 ferror函数 需要读者注意的是,需要读者注意的是,ferror函数对于同一个文件,在每次函数对于同一个文件,在每次调用输入调用输入/输出函数时,均产生一个新的输出函数时,均产生一个新的ferror函数值。因此函数值。因此最好是每次调用输入最好是每次调用输入/输出函数时立即检查输出函数时立即检查ferror函数值,以函数值,以防止信息的丢失。防止信息的丢失。 此外,在执行此外,在执行fopen函数时,函数时,ferror函数的初始值自动置函数的初始值自动置0。 C语言程序设计案例教程 大连理工大学出版社10.5 文件的出错检测10.5.2 clearerr函数 clearerr函数的功能是使文件错误标志和结束标志置函数的功能是使文件错误标志和结束标志置0。其调用格式为:其调用格式为: clearerr(fp);其中的其中的fp为文件指针。为文件指针。在调用一个输入在调用一个输入/输出函数出错时,输出函数出错时,ferror函数返回了非零值。函数返回了非零值。例如:例如: clearerr(fp); 在执行上述语句后,在执行上述语句后,ferror(fp)的返回值变成了

    注意事项

    本文(教学课件C语言程序设计案例教程第10章 文件.ppt)为本站会员(春哥&#****71;)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开