文档详情

C语言文件(十).ppt

发布:2016-03-26约字共74页下载文档
文本预览下载声明
C文件概述 文件:存储在外部介质上数据的集合,是操作系统数据管理的单位 文件特点: 文件处理方法 缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区 非缓冲文件系统:低级文件系统,由用户在程序中为每个文件设定缓冲区 缓冲文件和非缓冲文件 1、 缓冲文件: (又称高层或标准文件系统 ) 系统为每个正在使用的文件在内存中开辟一个缓冲区,当磁盘和内存交换数据时,首先把数据存放在缓冲区,然后再进行数据的交换。 2、非缓冲文件: (又称低层文件系统 ) 系统不自动为文件开辟固定大小的缓冲区,而是由程序具体确定。依赖OS版本,可移植性差,标准C不建议使用. 文件的概念 1、文件的含义: 存储在外部介质上的数据集合。 2、文件类型的定义:一个结构体类型 FILE定义在 stdio.h 中 typedef struct { int _fd; /*文件号 int _cleft; /*缓冲区剩下的字节 int _mode; /*文件操作模式 char *_nextc; /*下一个字节位置 char *_buff; /*文件缓冲区位置 } FILE; 3、文件类型指针: FILE *fp; 一种新的指针类型 文件的打开与关闭 一、文件的打开: 1、功能:将文件指针指向用户要操作的文件,并使文件处于可用状态。 2、格式:FILE *fp; fp=fopen(文件名,文件的打开方式); 3、使用方法: 二、文件的关闭 1、功能:将文件指针与所指的文件“脱钩”,并回收文件所占的内存空间。并强制实现缓冲区数据存盘。 2、格式: fclose(文件指针); 3、例如: fclose(fp); 例:建立一个文本文件letter.dat,将26个英文大写字母写到文件中。 #include stdio.h main() { FILE *fp; char ch; : : : for(ch=‘A’;ch=‘Z’;ch++) : fputc(‘\n’,fp); fclose(fp); } 例:建立一个文本文件letter.dat,将26个英文大写字母写到文件中。 #include stdio.h main() { FILE *fp; char ch; fp=fopen(“letter.dat”,”w”); if(fp==NULL) { printf(“cannot open file ”); exit();} for(ch=‘A’;ch=‘Z’;ch++) fputc(ch,fp); fputc(‘\n’,fp); fclose(fp); } 例:设二进制文件number.dat中顺序存放一组字符,求顺序号为奇数(1,3,5..)的字符的ASICII和。 #include stdio.h main() { FILE *fp; char ch; float sum=0; fp=fopen(“number.dat”,”rb”); if(fp==NULL) { printf(“cannot open file ”); exit();} ch=fgetc(fp); while(!feof(fp)) { sum=sum+ch;fseek(fp,1,SEEK_CUR);ch=fget(fp);} fclose(fp);printf(“sum=%f”,sum); } 例:将一个磁盘文件中信息复制到另外的磁盘文件中去.演示 #include stdio.h main() { FILE *in,*out; char ch,infile[10],outfile[10]; scanf(“%s”,infile); scanf(“%s”,outfile); if ((in=fopen(infile,”r”))==NULL) { printf(“cannot open infile or outfile\n”); exit(0);} if ((out=fopen(outfile,”w”))==NULL) { printf(“cannot open infile or outfile\n”); exit(0);} while(!feof(in))fputc(fgetc(in),out); fclose(in);fclose(out);} 例:fseek(fp, 20, 0); 将位置指针从文件头移动20个字节 fseek(fp, ?10, 1); 将位置指针移到离文件尾30个字节处 f
显示全部
相似文档