用语言编写程序.pptx
《用语言编写程序.pptx》由会员分享,可在线阅读,更多相关《用语言编写程序.pptx(51页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、会计学1用语言编写程序用语言编写程序本章要点本章要点n n什么是文件?C文件是如何存储的?n n什么是文件缓冲系统?工作原理如何?n n什么是文本文件和二进制文件?n n怎样打开、关闭文件?n n怎样编写文件读写程序?n n怎样编写程序,实现简单的数据处理?第1页/共51页12.1 学生成绩文件统计学生成绩文件统计 12.1.1 程序解析12.1.2 文件的概念12.1.3 文本文件和二进制文件12.1.4 缓冲文件系统12.1.5 文件结构与文件类型指针12.1.6 文件控制块12.1.7 文件处理步骤第2页/共51页12.1.1 程序解析程序解析【例例12-112-1】有有5 5位学生的计
2、算机等级考试成绩被事位学生的计算机等级考试成绩被事先保存在数据文件先保存在数据文件 C:f12-1.txt C:f12-1.txt 中,包括学号、姓中,包括学号、姓名和分数,文件内容如下:名和分数,文件内容如下:301101 Zhangwen 91 301101 Zhangwen 91 301102 Chenhui 85 301102 Chenhui 85 301103 Wangweidong 76 301103 Wangweidong 76 301104 Zhengwei 69 301104 Zhengwei 69 301105 Guowentao 55 301105 Guowentao 5
3、5请读出文件的所有内容显示到屏幕请读出文件的所有内容显示到屏幕,并输出平均分。并输出平均分。第3页/共51页例例例例12-112-1程序程序程序程序#include#include#include#include#include#include int main(void)int main(void)FILE*fp;/*FILE*fp;/*定义文件指针定义文件指针*/long num;long num;char stname20;char stname20;int i,score;int avg_score=0;/*int i,score;int avg_score=0;/*打开文件打开文件*
4、/if(fp=if(fp=fopenfopen(c:f12-1.txt,r)=NULL)(c:f12-1.txt,r)=NULL)printf(File open error!n);printf(File open error!n);exit(0);exit(0);第4页/共51页 for(i=0;i5;i+)/*for(i=0;i5;i+)/*从文件读入成绩从文件读入成绩*/fscanffscanf(fp,%ld%s%d,&num,stname,&score);(fp,%ld%s%d,&num,stname,&score);avg_score+=score;/*avg_score+=scor
5、e;/*统计总分统计总分*/printf(%ld%s%dn,num,stname,score);printf(%ld%s%dn,num,stname,score);/*/*输出平均分输出平均分*/printf(Average score:%dn,avg_score/5);printf(Average score:%dn,avg_score/5);if(if(fclosefclose(fp)/*(fp)/*关闭文件关闭文件*/printf(Can not close the file!n);printf(Can not close the file!n);exit(0);exit(0);retu
6、rn 0;return 0;例例例例12-112-1程序程序程序程序第5页/共51页12.1.2 文件的概念文件的概念n n文件是文件是存储存储在在外部介质外部介质上的一个有序数据集合。上的一个有序数据集合。由操作系统来管理由操作系统来管理。最常用的是磁盘文件。最常用的是磁盘文件。n n从文件数据的组织形式可分为文本文件和二进制从文件数据的组织形式可分为文本文件和二进制文件文件。n nC C语言中的输入输出操作可涉及的并不只限于键语言中的输入输出操作可涉及的并不只限于键 盘和显示器,还可以是文件,特别在输入输出数盘和显示器,还可以是文件,特别在输入输出数 据量较大时。据量较大时。n n文件的大
7、容量、可编辑、易交流和能保存等特点文件的大容量、可编辑、易交流和能保存等特点 是键盘和显示器不可相比的。是键盘和显示器不可相比的。第6页/共51页12.1.3 文本文件和二进文本文件和二进制文件制文件 C C语言把文件都看作数据流,文本文件为字符流语言把文件都看作数据流,文本文件为字符流,二进制文件为二进制流,对文件的读写是以字节为二进制文件为二进制流,对文件的读写是以字节为单位的。单位的。n n文本文件是把数据以一串字符的形式,每个字符文本文件是把数据以一串字符的形式,每个字符 以其以其ASCIIASCII码值存储。码值存储。n n二进制文件是把数据按内存中的存储形式存储。二进制文件是把数据
8、按内存中的存储形式存储。例如,整数例如,整数12341234 文本文件存储:文本文件存储:49 50 51 52 49 50 51 52 (4 4个字符个字符ASCIIASCII码码)二进制文件存储:二进制文件存储:00 00 04 D2 00 00 04 D2(12341234的二进制数的二进制数)第7页/共51页12.1.4 缓冲文件系统缓冲文件系统 ANSI C ANSI C规定,对文件进行输入或输出时,系统规定,对文件进行输入或输出时,系统将为输入或输出文件开辟缓冲区。将为输入或输出文件开辟缓冲区。缓冲文件系统的工作原理如下图所示。缓冲文件系统的工作原理如下图所示。操作系统操作系统自动
9、完成自动完成文文件件512字节字节程序控制程序控制内存缓冲区内存缓冲区程序数据区程序数据区第8页/共51页12.1.5 文件结构与文件类文件结构与文件类型指针型指针1.1.自定义类型自定义类型 C C语言允许用语言允许用 typedef typedef 对已有类型名再定义一个对已有类型名再定义一个 新类型名,新类型名,typedeftypedef语句的一般形式为:语句的一般形式为:typedeftypedef 已有类型名已有类型名 新类型名新类型名;其中:其中:n n已有类型名已有类型名:包括:包括C C语言中规定的类型和已定义语言中规定的类型和已定义 过的自定义类型。过的自定义类型。n n新
10、类型名新类型名:为一标识符,一般习惯用大写。:为一标识符,一般习惯用大写。n n新类型名新类型名相当于是相当于是已有类型名已有类型名的的别名别名,该,该已有类已有类 型名型名依然有效依然有效。第9页/共51页12.1.5 文件结构与文件类文件结构与文件类型指针型指针 如:如:typedef float typedef float REALREAL;则:则:REALREAL a,b;float a,b;a,b;float a,b;等价等价 如:如:typedef int typedef int NUMNUM10;10;则:则:NUMNUM n,m;int n10,m10;n,m;int n10,
11、m10;等价等价 如:如:typedef char*typedef char*STRINGSTRING;则:则:STRINGSTRING p,s10;char*p,*s10;p,s10;char*p,*s10;等价等价 如:如:typedef struct studenttypedef struct student char num4;float score;char num4;float score;NODENODE;则:则:NODENODE st,*p;struct student st,*p;st,*p;struct student st,*p;等价等价第10页/共51页12.1.5 文
12、件结构与文件类文件结构与文件类型指针型指针2.2.文件文件(结构结构)类型类型 FILE FILE 结构类型结构类型 FILE FILE 在在 stdio.h stdio.h 中用中用 typedef typedef 定义:定义:typedef typedef struct struct short level;short level;/*/*缓冲区使用量缓冲区使用量 */unsigned unsigned flags;flags;/*/*文件状态标志文件状态标志*/char fd;char fd;/*/*文件描述符文件描述符*/short bsize;short bsize;/*/*缓冲区大
13、小缓冲区大小*/unsigned char *buffer;unsigned char *buffer;/*/*文件缓冲区的首地址文件缓冲区的首地址*/unsigned char *curp;/*unsigned char *curp;/*指向文件缓冲区的工作指针指向文件缓冲区的工作指针*/unsigned char hold;unsigned char hold;/*/*其他信息其他信息*/unsigned istemp;unsigned istemp;short token;short token;FILEFILE;第11页/共51页12.1.5 文件结构与文件类文件结构与文件类型指针型指
14、针3.3.文件类型指针文件类型指针 定义文件类型指针的一般形式:定义文件类型指针的一般形式:FILE*FILE*变量名变量名;例如,例如,FILE *fp,*fpi,*fpo;FILE *fp,*fpi,*fpo;系统为输入或输出文件开辟缓冲区的同时,还为系统为输入或输出文件开辟缓冲区的同时,还为该文件定义并初始化了一个文件类型的结构变量,该文件定义并初始化了一个文件类型的结构变量,包含有诸如缓冲区首地址、当前存取位置、对文件包含有诸如缓冲区首地址、当前存取位置、对文件是读还是写等信息。是读还是写等信息。定义一个文件指针指向该文件类型的结构变量,定义一个文件指针指向该文件类型的结构变量,从而可
15、通过其中各项信息来实现对该文件的操作。从而可通过其中各项信息来实现对该文件的操作。第12页/共51页12.1.5 文件结构与文件类文件结构与文件类型指针型指针 一般编程者无需关心文件结构变量的具体内容,一般编程者无需关心文件结构变量的具体内容,程序中只使用指向其的文件指针,用文件指针代表程序中只使用指向其的文件指针,用文件指针代表文件整体,对文件指针也不必和不能进行除赋值指文件整体,对文件指针也不必和不能进行除赋值指向外的任何操作。向外的任何操作。第13页/共51页12.1.6文件控制块文件控制块FCBn n文件控制块文件控制块FCBFCB(File File Control BlockCon
16、trol Block)n nOSOS中对文件的操作控制通中对文件的操作控制通过过FCBFCB,处理的是处理的是FCBFCB列表列表n n一个文件对应一个一个文件对应一个FCBFCBn n文件缓冲区由程序中文件缓冲区由程序中fopenfopen语句动态创建语句动态创建n n打开文件时,打开文件时,FCB FCB的内容的内容信息被复制到文件缓冲区信息被复制到文件缓冲区保存保存n n用文件指针指向文件缓冲用文件指针指向文件缓冲区实现对文件数据的访问区实现对文件数据的访问第14页/共51页12.1.7 文件处理步骤文件处理步骤文件处理的四个步骤:文件处理的四个步骤:定义文件指针定义文件指针 打开文件:
17、文件指针指向磁盘文件缓冲区打开文件:文件指针指向磁盘文件缓冲区 文件处理:文件读写操作文件处理:文件读写操作 关闭文件关闭文件第15页/共51页12.2 用户信息加密和校用户信息加密和校验验12.2.1 程序解析12.2.2 打开文件和关闭文件12.2.3 文件读写12.2.4 其他相关函数第16页/共51页12.2.1 程序解析程序解析【例例12-212-2】为了保障系统安全,通常采取用户帐号为了保障系统安全,通常采取用户帐号和密码登录系统。系统用户信息存放在一个文件中和密码登录系统。系统用户信息存放在一个文件中,系统帐号名和密码由若干字母与数字字符构成,因系统帐号名和密码由若干字母与数字字
18、符构成,因安全需要文件中的密码不能是明文,必须要经过加安全需要文件中的密码不能是明文,必须要经过加密处理。请编程实现:输入密处理。请编程实现:输入5 5个用户信息个用户信息(包含帐号包含帐号名和密码名和密码)并写入文件并写入文件f12-2.datf12-2.dat。要求文件中每个用。要求文件中每个用户信息占一行,帐号名和加密过的密码之间用一个户信息占一行,帐号名和加密过的密码之间用一个空格分隔。空格分隔。密码加密算法密码加密算法:对每个字符:对每个字符ASCIIASCII码的低码的低四位求反,高四位保持不变四位求反,高四位保持不变(即将其与即将其与1515进行异或进行异或)。第17页/共51页
19、例例例例12-212-2程序程序程序程序#include#include#include#include struct sysuser /*struct sysuser /*用户帐号信息结构用户帐号信息结构*/char name20;/*char name20;/*用户名用户名*/*/char pw8;/*char pw8;/*密码密码 */*/;/*/*加密算法加密算法:与与0 x0F0 x0F异或异或,实现低四位取反实现低四位取反,高四位不变高四位不变*/void encrypt(char*pwd)void encrypt(char*pwd)int i;int i;for(i=0;i st
20、rlen(pwd);i+)for(i=0;i strlen(pwd);i+)pwdi=pwdi 15;pwdi=pwdi 15;第18页/共51页int main(void)int main(void)int i;FILE*fp;/*int i;FILE*fp;/*定义文件指针定义文件指针*/struct sysuser su;struct sysuser su;if(if(fp=fopenfp=fopen(f12-2.txt,(f12-2.txt,w w)=NULL)/*)=NULL)/*打开文件打开文件*/printf(File open error!n);exit(0);printf(F
21、ile open error!n);exit(0);for(i=1;i=5;i+)for(i=1;i=5;i+)printf(Enter%i th sysuser printf(Enter%i th sysuser (name password):,i);(name password):,i);scanf(%s%s,su.name,su.pw);/*scanf(%s%s,su.name,su.pw);/*键盘输入键盘输入*/encrypt(su.pw);encrypt(su.pw);/*/*加密处理加密处理*/fprintffprintf(fp,%s%sn,su.name,su.pw);(fp
22、,%s%sn,su.name,su.pw);/*/*写文件写文件*/if(if(fclosefclose(fp)/*(fp)/*关闭文件关闭文件 */printf(Can not close the file!n);exit(0);printf(Can not close the file!n);exit(0);return 0;return 0;例例例例12-212-2程序程序程序程序第19页/共51页12.2.2 打开文件和关闭打开文件和关闭文件文件1.1.打开文件打开文件n n文件打开函数文件打开函数 fopen()fopen()原型原型:FILE*fopen(char*fname,ch
23、ar*mode);FILE*fopen(char*fname,char*mode);功能功能:以以modemode方式打开文件方式打开文件fnamefname。如成功,返回指。如成功,返回指 向打开文件的文件指针;如失败向打开文件的文件指针;如失败,返回返回NULLNULL。其中其中:*fname *fname 字符串,要打开文件的文件名及其路径。字符串,要打开文件的文件名及其路径。*mode *mode 字符串,文件使用方式或称打开方式。字符串,文件使用方式或称打开方式。例如,例如,FILE fp;char*p=d:f.txt;FILE fp;char*p=d:f.txt;fp fp=fop
24、en(d:f.txt,r);fopen(d:f.txt,r);或或 fp fp=fopen(p,r);fopen(p,r);第20页/共51页12.2.2 打开文件和关闭打开文件和关闭文件文件n n文件打开方式文件打开方式文本文件文本文件二进制文件二进制文件方式方式含义含义方式方式含义含义r 打开文件只读打开文件只读rb 打开文件只读打开文件只读w 建立文件只写建立文件只写wb 建立文件只写建立文件只写a 打开文件追加打开文件追加ab 打开文件追加打开文件追加r+打开文件读打开文件读/写写rb+打开文件读打开文件读/写写w+建立文件读建立文件读/写写wb+建立文件读建立文件读/写写a+打开文件
25、读打开文件读/写写/追加追加 ab+打开文件读打开文件读/写写/追加追加第21页/共51页n n文件读写与打开方式文件读写与打开方式if(if(读文件读文件)指定的文件必须存在,否则出错指定的文件必须存在,否则出错;if(if(写文件写文件)if(if(w w)if(if(该文件已存在该文件已存在)原文件将被删去重新建立原文件将被删去重新建立;else else 按指定的名字新建一个文件按指定的名字新建一个文件;else if (else if (a a)if(if(文件已存在文件已存在)写入数据将追加到原有数据的后面写入数据将追加到原有数据的后面;else else 按指定的名字新建一个文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 用语 编写 程序
限制150内