数据库文件[数据库].ppt
文本预览下载声明
第十二章 文件
掌握几个概念:
文件、文件操作的分类、顺序文件、索引文件、索引文件访问的过程、ISAM文件、VSAM文件、;文件操作的步骤如下:
首先用fopen函数打开文件。
然后可以对文件进行读或写操作对文件的
读或写操作完成后,应该及时用fclose函数关闭文件。
注意:文件操作的所有文件均包含在stdio.h
文件中。所以在程序的开始应有
#include stdio.h;12.1 文件的打开与关闭;使用方式;设有如下文件指针的定义:
FILE *fp;
那么fp=fopen(“student.dat”,”w”);
表示以文本方式打开文件student.dat,打开后要往文件中写
入数据。
又如:
fp=fopen(“score.dat”,”wb+”);
表示以二进制方式打开文件score.dat,向文件中写入数据后还可以读出文件中的数据。
如果打不开文件(原因很多),fopen会返回空指针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. 在程序开始运行时,系统自动打开三个文件:标准输入设备(键盘)、标准输出设备(显示器)和标准错误输出设备(通常也是显示器),与之对应的文件指针为stdin、stdout和stderr。;12.1.2 关闭文件函数 fclose;12.1.3 检测文件是否结束函数 feof;12.2 向文件中写数据;[例12.1];建立一个二进制文件score.dat,存放某班32名同学某门课的成绩(每名同学要求有学号和成绩两个数据项。;12.3 往文件中追加数据;设文件letter.dat(26个英文字母)已经由例10.1建立完毕,编写一个程序,要求键盘输入一组字符(直到输入字符‘?’时结束),将这些字符追加到文件的尾部。;12.4 从文件中读取??据;12.4.2. fread函数
fread的原型为
unsigned fread(void *buffer, unsigned size, unsigned count, FILE *fp);
功能:从文件中读取每项长度为size字节的count个数据项,存到buffer所指向的内存单元开始的内存区中。;将letter.dat文件存放的所有字符从显示器上显示出来。由于我们
不知道文件中目前的字符个数,因此可以用EOF作为循环的结束条
件。
#include stdio.h
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)
printf(Blank file!\n);
while(ch!=EOF)
{ printf(%c,ch);
ch=fgetc(fp);
}
fclose(fp);
}
;求score.dat(例10.2建立的文件)的总成绩。
#include stdio.h
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;
;12.5 文件的定位;12.5.2 位置指针的随机移动函数fseek
fseek的原型为
int fseek(FILE *fp, long offset, int base);
功能:将文件的位置指针移到以base为起始点,offset为位移量的位置,同时清除文件结束标志
base常用三个符号常量:SEEK_SET、SEEK_CUR和SEEK_END,分别表示文件开始、当
显示全部