C语言程序设计 chapter12 文件

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

高级语言程序设计西安邮电学院计算机系王春梅讲师amei_wcm@xiyou.edu.cn第12章文件高级语言程序设计第12章文件2存储到内存的各种类型的数据,当程序运行结束,这些数据随之消失,下次再运行还要重新输入。用文件可以将输入或输出数据有组织的长期保存在磁盘中。数据可以做到一次输入,反复使用,提高输入输出效率。“文件”是指一组相关数据的集合。每个文件均有一个名称,即文件名,可以唯一标识一个文件。例如:源程序文件、目标文件、可执行文件、库文件(头文件)等。高级语言程序设计第12章文件312.1文件12.2文件的打开与关闭12.3文件的读写高级语言程序设计第12章文件41.文件的种类按文件存储数据的形式ASCII文件(或称文本文件)ASCII码文件中每个字节存放一个ASCII代码,代表一个字符,此种存储形式便于输出显示,在DOS操作系统下可以直接阅读二进制文件二进制文件中的数据是按照在内存中的存储格式原样存放的,此种存储形式节省存储单元。二进制文件在DOS操作系统下不能直接阅读。高级语言程序设计第12章文件5例:将整数1949分别存储在这两种数据文件中。ASCII文件:ASCII码二进制文件:补码占用4个字节占用2个字节1.文件的种类(续)00110001001110010011010000111001'1''9''4''9'0000011110011101文本与二进制形式比较高级语言程序设计第12章文件6写操作:1.从用户角度看,文件写操作的是将某个变量或数组的内容输出到文件中;2.实际上,进行文件的写操作时,数据从内存中的程序数据区,先放到文件缓冲区暂存,当缓冲区放满后,数据才被整块输出到外存储器上的文件中。一、文件缓冲区12.2文件的打开与关闭高级语言程序设计第12章文件7读操作:在进行文件的操作时,•先将外存文件中的一块数据一次读到文件缓冲区中,•然后再从缓冲区中取出程序所需的数据,•送入程序数据区中的指定变量或数组元素所对应的内存单元中。一、文件缓冲区12.2文件的打开与关闭高级语言程序设计第12章文件812.2文件的打开与关闭系统在内存中为每一个正在使用的文件开辟一个文件信息区,用来存放文件的相关信息(文件名、文件状态、文件当前读写位置、缓冲区状态等),通过它才能顺利进行文件操作。在C语言中对每个正在使用的文件,用一个指针变量指向对应的文件信息区,这个指针变量称为文件指针。定义文件指针的一般形式为:FILE*指针变量标识符;二、文件指针高级语言程序设计第12章文件912.2文件的打开与关闭其中FILE是由系统定义的一个结构体类型,该类型的结构体中含文件相关信息。typedefstruct{shortlevel;unsignedflags;charfd;unsignedcharhold;shortbsize;unsignedchar*baffer;unsignedchar*curp;unsignedistemp;shorttoken;}FILE;/*缓冲区“满/空”程度*//*文件状态标志*//*文件描述符*//*如无缓冲区不读取字符*//*缓冲区的大小*//*缓冲区中的位置指针*//*文件读写位置指针*//*临时文件指示器*//*用于有效性检查*/在C语言中,无论对磁盘文件还是设备文件的读/写都要通过FILE类型的结构体变量进行。因此对于每个使用中的磁盘文件必须先定义一个FILE类型的文件指针变量并指向此变量。高级语言程序设计第12章文件1012.2文件的打开与关闭操作文件的一般步骤打开文件读写文件关闭文件打开文件:建立用户程序与文件的联系,为文件分配一个文件缓冲区。读写文件:是指对文件的读、写、追加和定位操作。关闭文件:切断文件与程序的联系,释放文件缓冲区C语言的输入输出函数库中提供了大量的函数,用于完成对数据文件的建立、数据的读写、数据的追加等操作。在程序中调用这些函数时,必须先用include命令包含stdio.h文件。高级语言程序设计第12章文件11常用的调用形式:FILE*fp;fp=fopen(文件名,文件使用方式);文件名:需要打开的文件名称(字符串)。文件使用方式:是具有特定含义的符号。1.文件打开函数fopen()函数功能:按指定的文件使用方式打开指定的文件。若文件打开成功,为该文件分配一个文件缓冲区和一个FILE类型变量,返回一个FILE类型指针;若文件打开失败,返回NULL。检查文件打开操作是否成功if((fp=fopen(e:\\soft\\tc\\stu.txt,r))==NULL){printf(”Cannotopenfile.\n”);exit(0);}1.检查以只读方式打开文件名为“e:\\soft\\tc\\stu.txt”的文件是否成功。2.exit函数的作用:结束程序的执行,并将实参0作为函数返回值传给操作系统。高级语言程序设计第12章文件12只读方式:为读(输入)文本文件打开文件。若文件不存在,返回NULL。只写方式:为写(输出)文本文件打开文件。若文件不存在,则建立一个新文件;若文件已存在,则清空文件。追加方式:为写(输出)文本文件打开文件。若文件已存在,则保持原来文件的内容,将新的数据增加到原来数据的后面;若文件不存在,则建立一个新文件。2.文件的三种基本使用方式文件类型只读方式只写方式追加方式读写模式ASCII文件”r””w””a””r+””w+””a+”二进制文件”rb””wb””ab””rb+””wb+””ab+”高级语言程序设计第12章文件13常用的调用形式:FILE*fp;fclose(fp);fp:已经打开的文件指针。4.文件关闭函数fclose()函数功能:关闭fp指定的文件,释放该文件的缓冲区、FILE类型变量及文件指针。若文件关闭成功,则返回0;若文件关闭失败,则返回非0值。高级语言程序设计第12章文件14常用的调用形式:FILE*fp;/*fp:文件指针变量。*/feof(fp);12.2.2文件结束测试函数对文本文件进行读操作时,例如fgetc()返回EOF,即可作文件结束处理。但在二进制文件中-1是合法数据,所以系统提供了一个适用对象更普遍的文件结束测试函数feof。函数功能:测试fp所指向的文件是否已读到文件尾部。若该文件没有结束,则返回0;若文件结束,则返回非0值。高级语言程序设计第12章文件1512.3文本文件读写1、单字符读写写函数:intfputc(charch,FILE*fp);功能:将字符ch写入到文件指针fp指向文件的位置。成功时返回字符本身,否则返回EOF。读函数:intfgetc(FILE*fp);功能:从文件指针fp指向文件的位置读取一个字符,若成功则返回该字符,否则返回EOF。读取完成后指针自动后移指向下一个字符。高级语言程序设计第12章文件162、字符串读写写函数:intfputs(char*str,FILE*fp);功能:将字符串str写入到文fp指向文件的位置。成功时返回非0值,否则返回EOF。读函数:char*fgets(char*str,intn,FILE*fp);功能:从fp指向文件的位置n个字符放入字符串str中,若成功则返回该字符串地址,否则返回NULL。高级语言程序设计第12章文件17常用的调用形式:FILE*fp;fprintf(fp,格式控制串,输出项参数表);格式控制串和输出项参数表的规定和使用方法与printf函数相同。3.1.格式输出函数fprintf()函数功能:将输出项按指定格式写入fp所指向的文件中。若输出操作成功,返回写入的字节数;若输出操作失败,则返回EOF。与标准文件的格式输入输出函数scanf和printf相对应,文本文件也有格式输入输出函数fscanf和fprintf。它们的功能和格式基本相同,不同之处在于scanf和printf的读写对象是终端(键盘和显示器),fscanf和fprintf的读写对象是磁盘文件。高级语言程序设计第12章文件18常用的调用形式:FILE*fp;fscanf(fp,格式控制串,地址表);格式控制串和地址表的规定和使用方法与scanf函数相同。3.2格式输入函数fscanf()函数功能:按格式控制串所描述的格式,从fp所指向的文件中读取数据,送到指定的内存地址单元中。若输入操作成功,返回实际读出的数据项个数,不包括数据分隔符。若没有读数据项,则返回0。若文件结束或调用失败,则返回EOF。高级语言程序设计第12章文件19常用的调用形式:fwrite(p,size,n,fp);p:某类型指针;size:某类型数据存储空间的字节数;n:此次写入文件的数据项数;fp:文件指针变量。4.1.数据块输出函数fwrite()运用数据块输入输出函数可建立整型、实型、结构体类型等各种类型的二进制文件。函数功能:将p指向的存储区中n个数据项写入fp所指向的文件。若输出操作成功,返回写入的数据项数;若输出操作失败,则返回0。高级语言程序设计第12章文件20常用的调用形式:fread(p,size,n,fp);p:某类型指针;size:某类型数据存储空间的字节数;n:此次从文件中读取的数据项数;fp:文件指针变量。4.2.数据块输入函数fread()函数功能:从fp所指向的文件中,读取n个数据项,存放到p所指向的存储区域。若输入操作成功,返回实际读出的数据项个数若文件结束或调用失败,则返回0。高级语言程序设计第12章文件21练习:编写一个程序完成对某班学生(30人)的成绩信息进行管理,每个学生的成绩信息包括学号、姓名和3门课程的成绩。要求编写函数分别完成以下功能:(1).成绩信息从文件stu.txt输入;(2).计算三门课程的平均值;(3).按平均值的大小从低到高进行排序;(4).成绩信息的输出到文件stu_sort.txt。高级语言程序设计第12章文件221.有两个磁盘文件string1和string2,各存放一行字母,要求把这两个文件中的信息合并并按字母顺序排列,输出到一个新文件中。3.设计一个登陆、注册界面,基本要求:可以注册一个新用户,并设置其密码;可以登陆系统,如果密码不对,应允许再重新输入,如果连续三次口令输入均为错误,显示“非法用户!”后退出2.从键盘输入字符,逐个送到磁盘上,直到“#”为止。练习:

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功