Chap12文件12.1学生成绩文件统计12.2用户信息加密和校验12.3文件综合应用:资金账户管理
Chap 12 文件 12.1 学生成绩文件统计 12.2 用户信息加密和校验 12.3 文件综合应用:资金账户管理
本章要点■什么是文件?C文件是如何存储的?■什么是文件缓冲系统?工作原理如何?1什么是文本文件和二进制文件?■怎样打开、关闭文件?怎样编写文件读写程序?■怎样编写程序,实现简单的数据处理?
本章要点 ◼ 什么是文件?C文件是如何存储的? ◼ 什么是文件缓冲系统?工作原理如何? ◼ 什么是文本文件和二进制文件? ◼ 怎样打开、关闭文件? ◼ 怎样编写文件读写程序? ◼ 怎样编写程序,实现简单的数据处理?
12.1学生成绩文件统计【例12-1】有5位学生的计算机等级考试成绩被事先保存在数据文件C:If12-1.txt(C盘根目录下的文件f12-1.txt,需事先准备好该文件)中,包括学号、姓名和分数,文件内容如下:301101 Zhangwen 91301102 Chenhui 85301103Wangweidong76301104 Zhengwei 69301105Guowentao55请读出文件的所有内容显示到屏幕,并输出平均分。国T:VHOWEVSS100学校108项目100-C教材口X口区f12-1.txt-记事本301101Zhangwen 91文件(F)编辑()格式(0)查看(V)帮助(H)301102Chenhui 85301101 Zhangwen 91一301103Wangweidong76301102 Chenhui 85301104Zhewei 69301103Wangweidong 76301105Guowentao 55301104 Zhengwei 69Average75score:301105Guowentao 55Presss any key to continue口K
12.1 学生成绩文件统计 【例12-1】有5位学生的计算机等级考试成绩被事先保存在数据文件 C:\f12-1.txt(C盘根目录下的文件f12-1.txt,需事先准备好该文件) 中,包括学号、姓名和分数,文件内容如下: 301101 Zhangwen 91 301102 Chenhui 85 301103 Wangweidong 76 301104 Zhengwei 69 301105 Guowentao 55 请读出文件的所有内容显示到屏幕,并输出平均分
#include例12-1源程序#include#includeint main(void)YFILE *fp;/*1.定义文件指针*/long num; char stname[2o];int i, score; int avg_score = O;/*2.打开文件*if((fp=fopen("c:llf12-1.txt","r"))==NULL)printf("File open error!\n");exit(0);1续下页
#include #include #include int main(void) { FILE *fp; /*1.定义文件指针*/ long num; char stname[20]; int i, score; int avg_score = 0; if((fp=fopen("c:\\f12-1.txt","r")) == NULL) /*2.打开文件*/ { printf("File open error!\n"); exit(0); } 续下页. 例12-1 源程序
例12-1源程序接上页....*3.文件处理(逐个读入和处理数据)*for(i=0;i<5;i++)1./*从文件读入成绩保存到变量*/fscanf(fp,"%ld%s%d",&num,stname,&score);avg_score+=score;/*统计总分*/*输出成绩到屏幕*/printf("%ld%s%din",num,stname,score)/*输出平均分到屏幕*/printf("Average score: %dln",avg_score/5);if(fclose(fp)/*4.关闭文件*printf("Can not close the file!ln");exit(0);7return O;7
例12-1 源程序 /*3.文件处理(逐个读入和处理数据)*/ for(i=0;i<5;i++) { /*从文件读入成绩保存到变量*/ fscanf(fp,"%ld%s%d",&num,stname,&score); avg_score += score; /*统计总分*/ /*输出成绩到屏幕*/ printf("%ld%s %d\n",num,stname,score); } /*输出平均分到屏幕*/ printf("Average score: %d\n", avg_score/5); if(fclose(fp)){ /*4.关闭文件*/ printf( "Can not close the file!\n" ); exit(0); } return 0; } 接上页
12.1.2文件的概念■文件:操作系统中的文件是指驻留在外部介质(如磁盘等)中的一个有序数据集。1各种类型的文件口程序文件:源文件、目标程序、可执行程序口数据文件(输入/输出):文本文件、图像文件、声音文件、可执行文件等■文件的特点:口数据永久保存:数据长度不定:数据按顺序存取
12.1.2 文件的概念 ◼ 文件:操作系统中的文件是指驻留在外部介 质(如磁盘等)中的一个有序数据集。 ◼ 各种类型的文件 程序文件:源文件、目标程序、可执行程序 数据文件(输入/输出): 文本文件、图像文件、 声音文件、可执行文件等 ◼ 文件的特点: 数据永久保存;数据长度不定;数据按顺序存取
文本文件和二进制文件12.1.3字节字节字节字节字节字节·C语言中的文件是数据流(由一个个的字节数据组成)文件的两种数据形式:口AScll码(文本文件textstream)字符流口二进制码(二进制文件binarystream)二进制流二进制文件是直接把内存数据以二进制形式保存。例如,整数1234口文本文件保存:49505152(4个字符)口二进制文件保存:04D2(1234的二进制数)
12.1.3 文本文件和二进制文件 C语言中的文件是数据流(由一个个的字节数据组成) 文件的两种数据形式: ASCII码 (文本文件 text stream)字符流 二进制码(二进制文件 binary stream)二进制流 二进制文件是直接把内存数据以二进制形式保存。 例如,整数1234 文本文件保存:49 50 51 52 (4个字符) 二进制文件保存: 04D2 (1234的二进制数) 字节 字节 字节 字节 字节 字节 . . . . . . .
12.1.4缓冲文件系统由于磁盘速度慢直接把数据写到磁盘效率很低由操作系统自数据缓冲器动完成程房安制文件512字节内存单元内存单元
12.1.4 缓冲文件系统 内存单元 内存单元 数据 . 缓冲器 512字节 . 文件 由操作 系统自 动完成 程序控制 由于磁盘速度慢 直接把数据写到磁盘效率很低
12.1.4缓冲文件系统口向磁盘输出数据:数据缓冲区,装满缓冲区后→磁盘文件。口从磁盘读入数据:先一次性从磁盘文件将一批数据输入到缓冲区,然后再从缓冲区逐个读入数据到变量。由操作系统自数据缓冲器动完成程序控制文件2字节文件名内存单元用什么标识单元
12.1.4 缓冲文件系统 向磁盘输出数据:数据 缓冲区,装满 缓冲区后 磁盘文件。 从磁盘读入数据:先一次性从磁盘文件将一批 数据输入到缓冲区,然后再从缓冲区逐个读入 数据到变量。 数据 . 缓冲器 512字节 . 文件 由操作 系统自 程序控制 动完成 内存单元 用什么标识内存单元 文件名
缓冲文件与文件类型指针用文件指针指示文件缓冲区中具体读写的位置FILE*fp;fp由操作系统自数据缓冲器动完成程序控制...文件512字节同时使用多个文件时,每个文件都有缓冲区,用不同的文件指针分别指示
缓冲文件与文件类型指针 用文件指针指示文件缓冲区中具体读写的位置 FILE *fp; 数据 . 缓冲器 512字节 . 文件 由操作 系统自 程序控制 动完成 fp 同时使用多个文件时,每个文件都有缓冲区,用 不同的文件指针分别指示