数据库文件(数据库)

上传人:ji****72 文档编号:50956123 上传时间:2018-08-11 格式:PPT 页数:27 大小:122KB
返回 下载 相关 举报
数据库文件(数据库)_第1页
第1页 / 共27页
数据库文件(数据库)_第2页
第2页 / 共27页
数据库文件(数据库)_第3页
第3页 / 共27页
数据库文件(数据库)_第4页
第4页 / 共27页
数据库文件(数据库)_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《数据库文件(数据库)》由会员分享,可在线阅读,更多相关《数据库文件(数据库)(27页珍藏版)》请在金锄头文库上搜索。

1、 第十二章 文件掌握几个概念:文件、文件操作的分类、顺序文件、索引文件、索引文件 访问的过程、ISAM文件、VSAM文件、文件操作的步骤如下: 首先用fopen函数打开文件。 然后可以对文件进行读或写操作对文件的 读或写操作完成后,应该及时用fclose函数关闭文件。 注意:文件操作的所有文件均包含在stdio.h文件中。所以在程序的开始应有#include 12.1 文件的打开与关闭 12.1.1 打开文件函数fopen 对文件进行读写之前应当“打开”该文件, 读写完毕之后应当“关闭”该文件。 ANSI C规定使用fopen函数来打开文件。 fopen函数的原型为:FILE *fopen(c

2、har *filename, char *mode); 其中,filename指定要打开的文件名,可以 使用字符串常量,也可以使用指向字符串 的指针变量;mode表示文件的使用方式使用方式 含 义文件类型说明“r”只 读文本文件将要从文件中读出数据而打开文件“w”只写 文本文件将要往文件中写入数据而打开文件 “a”追加 文本文件将要往文件尾增加数据而打开文件 “r+”读 写文本文件为读 /写而打开文件“w+”读 写文本文件为读 /写而建立新文件“a+”读 写文本文件为读 /写而打开文件“rb”只 读二进制文件将要从文件中读出数据而打开文件“wb”只写 二进制文件将要往文件中写入数据而打开文件

3、“ab”追加 二进制文件将要往文件尾增加数据而打开文件 “rb+”读 写二进制文件为读 /写而打开文件“wb+”读 写二进制文件为读 /写而建立新文件“ab+”读 写二进制文件为读 /写而打开文件文件打开模式(mode)说明表 设有如下文件指针的定义: FILE *fp;那么fp=fopen(“student.dat”,”w”);表示以文本方式打开文件student.dat,打开后要往文件中 写入数据。 又如:fp=fopen(“score.dat”,”wb+”);表示以二进制方式打开文件score.dat,向文件中写入数据 后还可以读出文件中的数据。 如果打不开文件(原因很多),fopen会

4、返回空指针NULL, 我们常用下面的方法打开文件:if( ( fp=fopen(“文件名”, “文件使用方式”) )=NULL ) printf(“无法打开此文件!n”) exit(0); 1. 使用“r”和”r+”时,文件应已经存在。 2. 使用“w”和”w+”时,新建一个文件,若磁盘上已 有同名文件则被删除。 3. 使用“a”和”a+”时,文件应已经存在,原有内容不 被删除,位置指针移到文件末尾,可以添加内容 。 4. 在读文本文件时,遇到回车(r=13)换行 (n=10)符,自动转换成一个换行符;写时,反 过来,将一个换行符转换成一个回车符和一个换 行符(为了可以使用TYPE命令显示其内

5、容)。读 写二进制文件则无此转换。 5. 在程序开始运行时,系统自动打开三个文件:标 准输入设备(键盘)、标准输出设备(显示器) 和标准错误输出设备(通常也是显示器),与之 对应的文件指针为stdin、stdout和stderr。12.1.2 关闭文件函数 fclose使用完文件后应当关闭它,系统把缓冲区的内容写回 文件,然后将文件指针变量与该文件“脱钩”。 关闭文件使用函数fclose,它的原型为 int fclose(FILE *fp); 该函数关闭fp指向的文件。如果文件正常关闭将返回0 值;如果关闭文件失败则返回非0值。例 fp=fopen(“a:name.txt”,”w”); /*打

6、开一个文本文件*/ /*对文件进行操作*/ fclose(fp); /*关闭该文件*/12.1.3 检测文件是否结束函数 feof feof的原型为: int feof(FILE *fp); 它用于检测位置指针是否到达了文件尾部。 返回0表示位置指针未到达文件尾。 返回非0表示位置指针已到达文件尾。12.2 向文件中写数据向文件中写入数据可以使用以下函数: fputc函数 fputc的原型为 int fputc(int ch, FILE *fp); 此函数会将字符ch写入fp指向的文件。 若操作成功则返回ch的值;若操作失败则返回EOF(-1)。 通常用于将一个字符写入一个文本文件。 2. f

7、write函数 函数原型: unsigned fwrite(void *buffer, unsigned size, unsigned count, FILE *fp); 功能:将buffer所指向的内存单元开始的内存区中的每项长 度为size字节的count个数据项写到fp指向的文件中。 此函数主要用于二进制文件的写操作,可以将一个数组的 数 据写入文件中。例12.1建立一个文本文件letter.dat,将26个英文大写字母写到文件中。 #include main() char ch;FILE *fp;fp=fopen(“letter.dat“,“w“);if(fp=NULL) printf

8、(“nCannot open letter.dat!“);exit(0);for(ch=A;ch struct struct_name int number;int score; students32; main() FILE *fp;int i; if(fp=fopen(“score.dat“,“wb“)=NULL)printf(“Cannot open file score.dat!n“);exit(0); for(i=0;i main() char ch;FILE *fp;if(fp=fopen(“letter.dat“,“a“)=NULL) printf(“Cannot open th

9、is file!n“);exit(0);scanf(“%c“,while(ch!=?)fputc(ch,fp);scanf(“%c“, fclose(fp); 12.4 从文件中读取数据前面介绍了如何往文件中写数据,本节介绍如 何从文件中读取数据。 12.4.1 fgetc函数 fgetc的原型为 int fgetc(FILE *fp); 功能: 从文件的当前位置读出一个字符 将位置指针下移一个字符 若读取成功则返回所读的字符;若发生错误或文件 结 束则返回EOF(-1)。12.4.2. fread函数 fread的原型为unsigned fread(void *buffer, unsigne

10、d size, unsigned count, FILE *fp); 功能:从文件中读取每项长度为size字 节的count个数据项,存到buffer所指向 的内存单元开始的内存区中。将letter.dat文件存放的所有字符从显示器上显示出来。由于我们 不知道文件中目前的字符个数,因此可以用EOF作为循环的结束 条 件。 #include main() char ch;FILE *fp; if(fp=fopen(“letter.dat“,“r“)=NULL) printf(“Cannot open letter.dat!n“);exit(0); if(ch=fgetc(fp)=EOF)prin

11、tf(“Blank file!n“); while(ch!=EOF) printf(“%c“,ch);ch=fgetc(fp);fclose(fp); 求score.dat(例10.2建立的 文件)的总成绩。 #include struct node int number;int score;student; main() FILE *fp;int i; float sum; fp=fopen(“score.dat“,“rb“) If(fp=NULL)printf(“Cannot open score.dat!n“);exit(0);sum=0;fread( while(!feof(fp) s

12、um=sum+student.score; fread(printf(“sum=%fn“,sum);fclose(fp); 12.5 文件的定位我们使用文件定位函数改变位置指针的指向,从而实 现 对文件的随机读写。 12.5.1 位置指针复位函数rewindrewind函数的原型为void rewind(FILE *fp);功能:将文件的位置指针指向文件的开头。 清除错误标志和文件结束标志。12.5.2 位置指针的随机移动函数fseek fseek的原型为 int fseek(FILE *fp, long offset, int base); 功能:将文件的位置指针移到以base为起始点,of

13、fset为位移量的 位置,同时清除文件结束标志 base常用三个符号常量:SEEK_SET、SEEK_CUR和SEEK_END ,分别表示文件开始、当前位置和文件末尾。offset表示以起始点为基准,向前或向后移动的字节数。例如:fseek(fp, 2, SEEK_SET);表示将位置指针从文件开始处向后移动2个字节。 fseek(fp, 2, SEEK_CUR);表示将位置指针从当前位置向后移动2个字节 fseek(fp, -2, SEEK_END);表示将位置指针从文件尾部向前移动2个字节。12.5.3 求文件位置指针当前位置的函数ftell有时我们需要知道位置指针的当前位置,这就用到了f

14、tell函数。 ftell的原型为long ftell(FILE *fp); 功能:返回位置指针相对于文件开头的位移量。若出错返回-1L。12.6 其它读写函数 12.6.1 格式化读写函数fprintf和fscanf 12.6.2 字读写函数putw和getw 12.6.3 字符串读写函数fputs和fgets12.6.1 格式化读写函数fprintf和fscanffscanf和fprintf的原型为int fscanf(FILE *fp, char fmt, );int fprintf(FILE *fp, char fmt, ); 其中fp为文件指针,fmt为格式串,第三个及以后的参数为输

15、入/输出列 表。 功能:fscanf按fmt指定的格式从文件中读取数据,并传递到输入列表所指 向的内存单元;fprintf把输出列表中的值按fmt指定的格式写到文件中。 这两个函数的使用方法同scanf/printf类似。 例如 fprintf(fp, “%5.2f,%d”,x,i); fscanf(fp, “%f,%d”,12.6.2 字读写函数putw和getw1、putw函数:使用putw函数可以往指定文件写入一个字(2个字节 ),即一个整数;而使用getw可以从文件中读出一 个整数。 putw的原型为int putw(int w, FILE *fp); 功能:向文件中写入一个字(整数)。 例如,向文件中写入一个整数20: putw(20,fp); 2、getw的原型为 int getw(FILE *fp); 功能:从文件中读出一个字(整数)。 例如:从文件中读出一个整数,赋给整型变量i。 i=getw(fp);12.6.3 字符串读写函数fputs和fgets 1、fputs函数: fputs的原型为int fputs(char *str, FILE *fp);功能:将字符串str写到文件中。例如 fputs(“Computer”,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号