用语言编写程序课件.ppt

上传人(卖家):晟晟文业 文档编号:4962660 上传时间:2023-01-28 格式:PPT 页数:53 大小:303KB
下载 相关 举报
用语言编写程序课件.ppt_第1页
第1页 / 共53页
用语言编写程序课件.ppt_第2页
第2页 / 共53页
用语言编写程序课件.ppt_第3页
第3页 / 共53页
用语言编写程序课件.ppt_第4页
第4页 / 共53页
用语言编写程序课件.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

1、用语言编写程序课件本章要点本章要点n什么是文件?什么是文件?C文件是如何存储的?文件是如何存储的?n什么是文件缓冲系统?工作原理如何?什么是文件缓冲系统?工作原理如何?n什么是文本文件和二进制文件?什么是文本文件和二进制文件?n怎样打开、关闭文件?怎样打开、关闭文件?n怎样编写文件读写程序?怎样编写文件读写程序?n怎样编写程序,实现简单的数据处理?怎样编写程序,实现简单的数据处理?12.1 学生成绩文件统计学生成绩文件统计 12.1.1 程序解析程序解析12.1.2 文件的概念文件的概念12.1.3 文本文件和二进制文件文本文件和二进制文件12.1.4 缓冲文件系统缓冲文件系统12.1.5 文

2、件结构与文件类型指针文件结构与文件类型指针12.1.6 文件控制块文件控制块12.1.7 文件处理步骤文件处理步骤12.1.1 程序解析程序解析【例例12-1】有有5位学生的计算机等级考试成绩被事位学生的计算机等级考试成绩被事先保存在数据文件先保存在数据文件 C:f12-1.txt 中,包括学号、姓中,包括学号、姓名和分数,文件内容如下:名和分数,文件内容如下:301101 Zhangwen 91 301102 Chenhui 85 301103 Wangweidong 76 301104 Zhengwei 69 301105 Guowentao 55请读出文件的所有内容显示到屏幕请读出文件的

3、所有内容显示到屏幕,并输出平均分。并输出平均分。例例12-1程序程序#include#include#include int main(void)FILE*fp;/*定义文件指针定义文件指针*/long num;char stname20;int i,score;int avg_score=0;/*打开文件打开文件*/if(fp=fopen(c:f12-1.txt,r)=NULL)printf(File open error!n);exit(0);for(i=0;i5;i+)/*从文件读入成绩从文件读入成绩*/fscanf(fp,%ld%s%d,&num,stname,&score);avg_

4、score+=score;/*统计总分统计总分*/printf(%ld%s%dn,num,stname,score);/*输出平均分输出平均分*/printf(Average score:%dn,avg_score/5);if(fclose(fp)/*关闭文件关闭文件*/printf(Can not close the file!n);exit(0);return 0;例例12-1程序程序12.1.2 文件的概念文件的概念n文件是文件是存储存储在在外部介质外部介质上的一个有序数据集合。上的一个有序数据集合。由操作系统来管理由操作系统来管理。最常用的是磁盘文件。最常用的是磁盘文件。n从文件数据的

5、组织形式可分为文本文件和二进制从文件数据的组织形式可分为文本文件和二进制文件文件。nC语言中的输入输出操作可涉及的并不只限于键语言中的输入输出操作可涉及的并不只限于键 盘和显示器,还可以是文件,特别在输入输出数盘和显示器,还可以是文件,特别在输入输出数 据量较大时。据量较大时。n文件的大容量、可编辑、易交流和能保存等特点文件的大容量、可编辑、易交流和能保存等特点 是键盘和显示器不可相比的。是键盘和显示器不可相比的。12.1.3 文本文件和二进制文件文本文件和二进制文件 C语言把文件都看作数据流,文本文件为字符流语言把文件都看作数据流,文本文件为字符流,二进制文件为二进制流,对文件的读写是以字节

6、为二进制文件为二进制流,对文件的读写是以字节为单位的。单位的。n文本文件是把数据以一串字符的形式,每个字符文本文件是把数据以一串字符的形式,每个字符 以其以其ASCII码值存储。码值存储。n二进制文件是把数据按内存中的存储形式存储。二进制文件是把数据按内存中的存储形式存储。例如,整数例如,整数1234 文本文件存储:文本文件存储:49 50 51 52 (4个字符个字符ASCII码码)二进制文件存储:二进制文件存储:00 00 04 D2(1234的二进制数的二进制数)12.1.4 缓冲文件系统缓冲文件系统 ANSI C规定,对文件进行输入或输出时,系统规定,对文件进行输入或输出时,系统将为输

7、入或输出文件开辟缓冲区。将为输入或输出文件开辟缓冲区。缓冲文件系统的工作原理如下图所示。缓冲文件系统的工作原理如下图所示。操作系统操作系统自动完成自动完成文件文件512字节字节程序控制程序控制内存缓冲区内存缓冲区程序数据区程序数据区12.1.5 文件结构与文件类型指针文件结构与文件类型指针1.自定义类型自定义类型 C语言允许用语言允许用 typedef 对已有类型名再定义一个对已有类型名再定义一个 新类型名,新类型名,typedef语句的一般形式为:语句的一般形式为:typedef 已有类型名已有类型名 新类型名新类型名;其中:其中:n已有类型名已有类型名:包括包括C语言中规定的类型和已定义语

8、言中规定的类型和已定义 过的自定义类型。过的自定义类型。n新类型名新类型名:为一标识符,一般习惯用大写。为一标识符,一般习惯用大写。n新类型名新类型名相当于是相当于是已有类型名已有类型名的的别名别名,该,该已有类已有类 型名型名依然有效依然有效。12.1.5 文件结构与文件类型指针文件结构与文件类型指针 如:如:typedef float REAL;则:则:REAL a,b;float a,b;等价等价 如:如:typedef int NUM10;则:则:NUM n,m;int n10,m10;等价等价 如:如:typedef char*STRING;则:则:STRING p,s10;char

9、*p,*s10;等价等价 如:如:typedef struct student char num4;float score;NODE;则:则:NODE st,*p;struct student st,*p;等价等价12.1.5 文件结构与文件类型指针文件结构与文件类型指针 typedef struct short level;/*缓冲区使用量缓冲区使用量 */unsigned flags;/*文件状态标志文件状态标志*/char fd;/*文件描述符文件描述符*/short bsize;/*缓冲区大小缓冲区大小*/unsigned char *buffer;/*文件缓冲区的首地址文件缓冲区的首

10、地址*/unsigned char *curp;/*指向文件缓冲区的工作指针指向文件缓冲区的工作指针*/unsigned char hold;/*其他信息其他信息*/unsigned istemp;short token;FILE;12.1.5 文件结构与文件类型指针文件结构与文件类型指针3.系统为输入或输出文件开辟缓冲区的同时,还为系统为输入或输出文件开辟缓冲区的同时,还为该文件定义并初始化了一个文件类型的结构变量,该文件定义并初始化了一个文件类型的结构变量,包含有诸如缓冲区首地址、当前存取位置、对文件包含有诸如缓冲区首地址、当前存取位置、对文件是读还是写等信息。是读还是写等信息。定义一个文

11、件指针指向该文件类型的结构变量,定义一个文件指针指向该文件类型的结构变量,从而可通过其中各项信息来实现对该文件的操作。从而可通过其中各项信息来实现对该文件的操作。12.1.5 文件结构与文件类型指针文件结构与文件类型指针 一般编程者无需关心文件结构变量的具体内容,一般编程者无需关心文件结构变量的具体内容,程序中只使用指向其的文件指针,用文件指针代表程序中只使用指向其的文件指针,用文件指针代表文件整体,对文件指针也不必和不能进行除赋值指文件整体,对文件指针也不必和不能进行除赋值指向外的任何操作。向外的任何操作。12.1.6文件控制块文件控制块FCBn文件控制块文件控制块FCB(File Cont

12、rol Block)nOS中对文件的操作控制通中对文件的操作控制通过过FCB,处理的是处理的是FCB列表列表n一个文件对应一个一个文件对应一个FCBn文件缓冲区由程序中文件缓冲区由程序中fopen语句动态创建语句动态创建n打开文件时,打开文件时,FCB的内容的内容信息被复制到文件缓冲区信息被复制到文件缓冲区保存保存n用文件指针指向文件缓冲用文件指针指向文件缓冲区实现对文件数据的访问区实现对文件数据的访问12.1.7 文件处理步骤文件处理步骤文件处理的四个步骤:文件处理的四个步骤:定义文件指针定义文件指针 打开文件:文件指针指向磁盘文件缓冲区打开文件:文件指针指向磁盘文件缓冲区 文件处理:文件读

13、写操作文件处理:文件读写操作 关闭文件关闭文件12.2 用户信息加密和校验用户信息加密和校验12.2.1 程序解析程序解析12.2.2 打开文件和关闭文件打开文件和关闭文件12.2.3 文件读写文件读写12.2.4 其他相关函数其他相关函数12.2.1 程序解析程序解析【例例12-2】为了保障系统安全,通常采取用户帐号为了保障系统安全,通常采取用户帐号和密码登录系统。系统用户信息存放在一个文件中和密码登录系统。系统用户信息存放在一个文件中,系统帐号名和密码由若干字母与数字字符构成,因系统帐号名和密码由若干字母与数字字符构成,因安全需要文件中的密码不能是明文,必须要经过加安全需要文件中的密码不能

14、是明文,必须要经过加密处理。请编程实现:输入密处理。请编程实现:输入5个用户信息个用户信息(包含帐号包含帐号名和密码名和密码)并写入文件并写入文件f12-2.dat。要求文件中每个用。要求文件中每个用户信息占一行,帐号名和加密过的密码之间用一个户信息占一行,帐号名和加密过的密码之间用一个空格分隔。空格分隔。密码加密算法密码加密算法:对每个字符:对每个字符ASCII码的低码的低四位求反,高四位保持不变四位求反,高四位保持不变(即将其与即将其与15进行异或进行异或)。例例12-2程序程序#include#include struct sysuser /*用户帐号信息结构用户帐号信息结构*/char

15、 name20;/*用户名用户名*/char pw8;/*密码密码*/;/*加密算法加密算法:与与0 x0F异或异或,实现低四位取反实现低四位取反,高四位不变高四位不变*/void encrypt(char*pwd)int i;for(i=0;i strlen(pwd);i+)pwdi=pwdi 15;int main(void)int i;FILE*fp;/*定义文件指针定义文件指针*/struct sysuser su;if(fp=fopen(f12-2.txt,w)=NULL)/*打开文件打开文件*/printf(File open error!n);exit(0);for(i=1;i=

16、5;i+)printf(Enter%i th sysuser (name password):,i);scanf(%s%s,su.name,su.pw);/*键盘输入键盘输入*/encrypt(su.pw);/*加密处理加密处理*/fprintf(fp,%s%sn,su.name,su.pw);/*写文件写文件*/if(fclose(fp)/*关闭文件关闭文件*/printf(Can not close the file!n);exit(0);return 0;例例12-2程序程序12.2.2 打开文件和关闭文件打开文件和关闭文件1.打开文件打开文件n文件打开函数文件打开函数 fopen()原

17、型原型:FILE*fopen(char*fname,char*mode);功能功能:以以mode方式打开文件方式打开文件fname。如成功,返回指。如成功,返回指 向打开文件的文件指针;如失败向打开文件的文件指针;如失败,返回返回NULL。其中其中:*fname 字符串,要打开文件的文件名及其路径。字符串,要打开文件的文件名及其路径。*mode 字符串,文件使用方式或称打开方式。字符串,文件使用方式或称打开方式。例如,例如,FILE fp;char*p=d:f.txt;fp=fopen(d:f.txt,r);或或 fp=fopen(p,r);12.2.2 打开文件和关闭文件打开文件和关闭文件n

18、文件打开方式文件打开方式文本文件文本文件二进制文件二进制文件方式方式含义含义方式方式含义含义r 打开文件只读打开文件只读rb 打开文件只读打开文件只读w 建立文件只写建立文件只写wb 建立文件只写建立文件只写a 打开文件追加打开文件追加ab 打开文件追加打开文件追加r+打开文件读打开文件读/写写rb+打开文件读打开文件读/写写w+建立文件读建立文件读/写写wb+建立文件读建立文件读/写写a+打开文件读打开文件读/写写/追加追加 ab+打开文件读打开文件读/写写/追加追加n文件读写与打开方式文件读写与打开方式if(读文件读文件)指定的文件必须存在,否则出错指定的文件必须存在,否则出错;if(写文

19、件写文件)if(w)if(该文件已存在该文件已存在)原文件将被删去重新建立原文件将被删去重新建立;else 按指定的名字新建一个文件按指定的名字新建一个文件;else if (a)if(文件已存在文件已存在)写入数据将追加到原有数据的后面写入数据将追加到原有数据的后面;else 按指定的名字新建一个文件按指定的名字新建一个文件(同同w);if(文件同时读和写文件同时读和写)使用使用 r+、w+或或 a+打开文件打开文件;12.2.2 打开文件和关闭文件打开文件和关闭文件n为确保文件正常打开后再进行读写,可作如下形为确保文件正常打开后再进行读写,可作如下形 式的判断式的判断 if(fp=fope

20、n(f.txt,r)=NULL)printf(File open error!n);exit(0);/*原型原型:void exit(int status);*/*功能功能:关闭所有文件关闭所有文件,终止程序运行终止程序运行*/n文件打开后,所指定的打开方式直到文件关闭都文件打开后,所指定的打开方式直到文件关闭都 不能改变。不能改变。n允许同时打开多个文件,不同文件要用不同文件允许同时打开多个文件,不同文件要用不同文件 指针指示。不允许同一文件在关闭前再次打开。指针指示。不允许同一文件在关闭前再次打开。12.2.2 打开文件和关闭文件打开文件和关闭文件2.关闭文件关闭文件.n文件文件关闭关闭函

21、数函数 fclose()原型:原型:int fclose(FILE *fp);如果文件关闭成功,返回如果文件关闭成功,返回0,如检测到任何错误,如检测到任何错误,则返回则返回EOF(即即-1,在,在stdio.h中定义中定义)。n对文件是否正常关闭,可作如下形式的判断。对文件是否正常关闭,可作如下形式的判断。if(fclose(fp)printf(Can not close the file!n);exit(0);12.2.3 文件读写文件读写1.字符方式文件读写函数字符方式文件读写函数fgetc和和fputcn写一个字符的函数写一个字符的函数 fputc()原型原型:int fputc(ch

22、ar ch,FILE *fp);功能功能:将字符:将字符 ch 写到写到fp指向的文件中去,成功,则指向的文件中去,成功,则 返回该字符,否则返回返回该字符,否则返回EOF。n读一个字符的函数读一个字符的函数 fgetc()原型:原型:int fgetc(FILE *fp);功能功能:从一打开的文件中读一个字符,返回该字符。从一打开的文件中读一个字符,返回该字符。文件中有一个指向当前位置的指针自动后移一文件中有一个指向当前位置的指针自动后移一 个字符。反复调用可一直读到文件结束。文件个字符。反复调用可一直读到文件结束。文件 结束或出错时,返回结束或出错时,返回EOF。12.2.3 文件读写文件

23、读写【例例12-3】复制用户文件。将例复制用户文件。将例12-2的用户信息文的用户信息文件件f12-2.txt文件备份一份,取名为文件文件备份一份,取名为文件f12-3.txt。#include int main(void)FILE*fp1,*fp2;char c;if(fp1=fopen(f12-2.txt,r)=NULL)printf(File open error!n);exit(0);if(fp2=fopen(f12-3.txt,w)=NULL)printf(File open error!n);exit(0);while(!feof(fp1)c=fgetc(fp1);if(ch!=E

24、OF)fputc(c,fp2);if(fclose(fp1)printf(Can not close the file!n);exit(0);if(fclose(fp2)printf(Can not close the file!n);exit(0);return 0;例例12-3程序程序12.2.3 文件读写文件读写2.字符串方式文件读写函数字符串方式文件读写函数fgets和和fputsn读字符串函数读字符串函数fgets()原型原型:char*fgets(char*string,int n,FILE*fp);功能功能:从:从fp指定的文件读取长度为指定的文件读取长度为n-1的字符串存的字符

25、串存 入起始地址为入起始地址为string的内存空间,自动加结束标志的内存空间,自动加结束标志 0,共占,共占n个字符,返回值为地址个字符,返回值为地址string。若在未读足若在未读足n-1个字符前遇到换行符个字符前遇到换行符n或文件结束或文件结束 就停止读取。就停止读取。若读到文件末尾或出错,则返回若读到文件末尾或出错,则返回NULL值。值。12.2.3 文件读写文件读写n写字符串函数写字符串函数fputs()原型原型:int fputs(char*string,FILE*fp);功能功能:将:将string指向的字符串写到指向的字符串写到 fp 指定的文件。指定的文件。但不写入字符串结束

26、符但不写入字符串结束符0。写成功,则返回所写的最后一个字符,否则返回写成功,则返回所写的最后一个字符,否则返回 EOF值。值。12.2.3 文件读写文件读写【例例12-4】例例12-2的的f12-2.txt文件保存着系统用户文件保存着系统用户信息,编写一个函数信息,编写一个函数checkUserValid()用于登录系用于登录系统时校验用户的合法性。检查方法是统时校验用户的合法性。检查方法是:n在程序运行时输入用户名和密码,然后在用户文件中在程序运行时输入用户名和密码,然后在用户文件中查找该用户信息,如果用户名和密码在文件中找到,查找该用户信息,如果用户名和密码在文件中找到,则表示用户合法,返

27、回则表示用户合法,返回1,否则返回,否则返回0。n程 序 运 行 时,输 入 一 个 用 户 名 和 密 码,调 用程 序 运 行 时,输 入 一 个 用 户 名 和 密 码,调 用checkUserValid()函数,如果返回函数,如果返回1,则提示,则提示“Valid user!”,否则输出,否则输出“Invalid user!”。#include#include struct sysuser /*用户帐号信息结构用户帐号信息结构*/char name20;/*用户名用户名*/char pw8;/*密码密码*/;void encrypt(char*pwd)/*加密函数加密函数*/int i

28、;for(i=0;i username);strcpy(pwd,psu-password);encrypt(pwd);/*密码加密密码加密*/strcat(usr,);/*将用户名将用户名和和加密后密码加密后密码*/strcat(usr,pwd);/*连接成文件中相应格式连接成文件中相应格式*/strcat(usr,n);/*的字符串的字符串 */if(fp=fopen(f12-2.txt,r)=NULL)printf(File open error!n);exit(0);例例12-4程序程序例例12-4程序程序 while(!feof(fp)fgets(usr1,30,fp);/*读入一个用

29、户信息读入一个用户信息*/if(strcmp(usr,usr1)=0)check=1;break;if(fclose(fp)printf(Can not close the file!n);exit(0);return check;12.2.3 文件读写文件读写3.格式化方式文件读写格式化方式文件读写fscanf和和fprintfn调用格式:调用格式:fscanf(FILE*fp,格式字符串格式字符串,输入表输入表)fprintf(FILE*fp,格式字符串格式字符串,输出表输出表)n说明说明这两个函数与这两个函数与 scanf()和和printf()相似,只是读相似,只是读 写对象不同,前者

30、是文件,后者是终端。写对象不同,前者是文件,后者是终端。这两个函数读写的是文本文件。这两个函数读写的是文本文件。12.2.3 文件读写文件读写n示例示例 FILE *fp;int n;float x;fp=fopen(a.txt,r);fscanf(fp,%d%f,&n,&x);表示从文本文件表示从文本文件 a.txt 分别读入整型数到变量分别读入整型数到变量 n、浮点数到变量浮点数到变量 x。fp=fopen(b.txt,w);fprintf(fp,%d%f,n,x);表示把变量表示把变量 n 和和 x 的数值写入文本文件的数值写入文本文件 b.txt。12.2.3 文件读写文件读写4.数据

31、块方式文件读写函数数据块方式文件读写函数fread和和fwrite原型原型:int fread(void*buf,int size,int n,FILE*fp);int fwrite(void*buf,int size,int n,FILE*fp);其中其中:void*buf:任何类型指向数据块:任何类型指向数据块(首址首址)的指针。的指针。int size:要读写的数据块字节数。要读写的数据块字节数。int n:要读写的数据块个数。要读写的数据块个数。FILE*fp:指向已打开的指向已打开的要读写要读写文件的指针。文件的指针。功能功能:从从fp指定的指定的二进制文件二进制文件读取或写入长度为

32、读取或写入长度为size的的n 个数据块,存到或取自个数据块,存到或取自 buf所指向的内存区。读或所指向的内存区。读或 写成功,返回读或写数据块个数写成功,返回读或写数据块个数n,失败返回,失败返回0。12.2.3 文件读写文件读写【例例12-5】编程实现以二进制方式读写用户信息文编程实现以二进制方式读写用户信息文件件f12-5.dat,将,将5位用户信息写入文件,然后读出位用户信息写入文件,然后读出所有用户信息并显示在屏幕上。所有用户信息并显示在屏幕上。#include#include#define SIZE 5struct sysuser char name20;char pw8;voi

33、d encrypt(char*pwd);int main(void)FILE*fp;int i;struct sysuser uSIZE,suSIZE,*pu=u,*psu=su;if(fp=fopen(f12-5.dat,wb+)=NULL)printf(File open error!n);exit(0);for(i=0;iname,pu-pw);encrypt(&pu-pw);/*密码加密密码加密*/pu=u;fwrite(pu,sizeof(struct sysuser),SIZE,fp);例例12-5程序程序 rewind(fp);/*位置指针重置于文件首位置指针重置于文件首*/fr

34、ead(psu,sizeof(struct sysuser),SIZE,fp);for(i=0;iname,psu-pw);if(fclose(fp)printf(Can not close the file!n);exit(0);return 0;void encrypt(char*pwd)/*加密函数加密函数*/int i;for(i=0;i strlen(pwd);i+)pwdi=pwdi 15;例例12-5程序程序12.2.4 其他相关函数其他相关函数n从定位文件首函数从定位文件首函数rewind()void rewind(FILE*fp);将将 fp 指定的文件的指定的文件的当前位置

35、指针重新置于文件的当前位置指针重新置于文件的 开头位置。开头位置。n文件文件末尾检测函数末尾检测函数feof()int feof(FILE*fp);检测检测 fp 指定的文件的指定的文件的当前位置指针当前位置指针是否到达文件是否到达文件 结束位置,如果是,返回非结束位置,如果是,返回非0值,否则返回值,否则返回0。12.2.4 其他相关函数其他相关函数n指针移动控制函数指针移动控制函数fseek()int fseek(FILE*fp,long offset,int whence);将将 fp 指定的文件的指定的文件的当前位置指针移动到相对于由当前位置指针移动到相对于由 whence 指定的位置

36、偏移指定的位置偏移 offset 字节的新位置。字节的新位置。如移动成功,返回如移动成功,返回0,失败返回非,失败返回非0。其中:其中:offset 以以whence为基准位置,向前或向后移动为基准位置,向前或向后移动 的字节数,值为正时,向文件尾移动,值为负时,的字节数,值为正时,向文件尾移动,值为负时,则向文件头移动。则向文件头移动。12.2.4 其他相关函数其他相关函数 whence 为移动位置指针的基准位置,可以是如为移动位置指针的基准位置,可以是如 下下数值或符号常量数值或符号常量:0 或或 SEEK_SET 表示表示文件开始文件开始位置位置 1 或或 SEET_CUR 表示表示文件

37、当前文件当前位置位置 2 或或 SEEK_END 表示表示文件末尾文件末尾位置位置 例如:例如:fseek(fp,20L,0);将位置指针移动到距文件首部将位置指针移动到距文件首部20个字节处。个字节处。fseek(fp,-20L,SEEK_END):将位置指针移动到距文件尾部前将位置指针移动到距文件尾部前20个字节处。个字节处。12.2.4 其他相关函数其他相关函数n获取指针当前位置函数获取指针当前位置函数ftell()long ftell(FILE *fp);检测检测 fp 指定的文件指定的文件的位置指针的当前位置,的位置指针的当前位置,返回返回 相对于文件开头的位移量相对于文件开头的位移

38、量(字节数,文件第一个字字节数,文件第一个字 节的位移量为节的位移量为0)0)。如出错,则返回。如出错,则返回-1L。n读写错误检查函数读写错误检查函数ferror()int ferror(FILE *fp);检测检测fp指定的文件在用各种输入输出函数进行读指定的文件在用各种输入输出函数进行读 写写是否发生了错误,若没有错误,返回是否发生了错误,若没有错误,返回0;若发生;若发生 错误,返回非错误,返回非0。12.2.4 其他相关函数其他相关函数n出错标记清除函数出错标记清除函数clearerr()void clearerr(FILE*fp);清除清除(置置0)出错标志和文件结束标志。出错标志

39、和文件结束标志。12.3 文件综合应用文件综合应用:资金账户管理资金账户管理12.3.1 顺序文件和随机文件顺序文件和随机文件 按照按照C程序对文件访问的特点来分,文件可分为顺序程序对文件访问的特点来分,文件可分为顺序访问文件和随机访问文件,简称为顺序文件和随机文件。访问文件和随机访问文件,简称为顺序文件和随机文件。前面介绍的所有例子都进行的是顺序访问,通过使用前面介绍的所有例子都进行的是顺序访问,通过使用fprintf 或或 fputs 函数创建的数据记录长度并不是完全一函数创建的数据记录长度并不是完全一致的,这种记录长度不确定的文件访问称为顺序访问。致的,这种记录长度不确定的文件访问称为顺

40、序访问。而随机访问文件要求文件中单个记录的长度固定,可直而随机访问文件要求文件中单个记录的长度固定,可直接访问,这样速度快,并且无需通过其他记录查找特定接访问,这样速度快,并且无需通过其他记录查找特定记录。因此随机文件适合银行系统、航空售票系统、销记录。因此随机文件适合银行系统、航空售票系统、销售点系统和其他需要快速访问特定数据的事务处理系统。售点系统和其他需要快速访问特定数据的事务处理系统。12.3.2 个人资金账户管理个人资金账户管理【例例12-6】编程实现资金账户管理,要求如下:编程实现资金账户管理,要求如下:n资金账户的信息统一放在随机文件中资金账户的信息统一放在随机文件中,该随机文件

41、该随机文件 包括的数据项有记录包括的数据项有记录ID、发生日期、发生事件、发生日期、发生事件、发生金额(正的表示收入,负表示支出)和余额。发生金额(正的表示收入,负表示支出)和余额。每发生一笔收支,文件要增加一条记录,并计算每发生一笔收支,文件要增加一条记录,并计算 一次余额。一次余额。n程序实现程序实现3个功能,包括:个功能,包括:能创建资金账户文能创建资金账户文 件并添加收入或支出信息记录;件并添加收入或支出信息记录;能显示所有录能显示所有录,得知资金账户的收支流水账;得知资金账户的收支流水账;能查询最后一条记录,获知账户最后的余额。能查询最后一条记录,获知账户最后的余额。12.3.2 个

42、人资金账户管理个人资金账户管理n账户文件账户文件cashbox.dat的部分内容如下:的部分内容如下:LogID Create Date Note Charge Balance1 2006-06-01 alimony 500.00 500.002 2006-06-08 shopping -300.00 200.003 2006-06-15 shopping -60.00 140.004 2006-06-20 workingpay 200.00 340.005 2006-08-01 scholarship 1000.00 1340.00本章总结本章总结n文件的概念文件的概念文本文件和二进制文件文本文件和二进制文件文件缓冲系统文件缓冲系统文件结构,文件指针,自定义类型文件结构,文件指针,自定义类型n文件的打开与关闭文件的打开与关闭文件处理实现过程文件处理实现过程n文件读写操作与常用文件操作函数文件读写操作与常用文件操作函数n文件综合应用文件综合应用本章结束Thank You!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(用语言编写程序课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|