资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
文件,文件的相关概念 文件的打开、关闭 文件的读写、定位 文件处理函数,P330,文件:是指存储在外部介质(如磁盘等)一组相关数据的有序集合。文件可分为设备文件、磁盘文件。磁盘上的每个文件都有唯一一个名字,即文件名。磁盘存储数据是以文件为单位的。,文件概述:,使用数据文件的目的 1、数据文件的改动不引起程序的改动程序与数据分离 2、不同程序可以访问同一数据文件中的数据数据共享 3、能长期保存程序运行的中间数据或结果数据,P330,C语言中文件的分类,ASCII文件(文本文件):每一个字节放一个ASCII代码,代表一个字符。即一个字节代表一个字符。 二进制文件:存放的是二进制的补码形式。把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。 C语言将所有的文件都看成是字节流 或二进制流(数据流),即字节的有序序列。,C语言中对文件的基本操作,C语言程序设计中,文件操作都是由库函数来完成的。编写程序时,一般可分为以下步骤:,系统要为每个操作的文件在内存开辟一个缓冲区,用来存放文件的有关信息,这些信息存放在名为FILE的文件结构体类型中。,FILE由系统定义,保存在 stdio.h 文件中。,定义文件指针变量形式为:,P331,如: FILE *fpa,*fpb; 如果程序中要对n个文件操作,可设n个文件指针变量。,FILE *fp; fp=fopen(文件名,使用文件方式);,功能:按指定方式打开文件 返值:正常打开,返回一个文件指针;打开失败,返回NULL。,P332,fopen函数的调用一般形式:,打开哪个文件,打开文件做什么,P333,“r+/rb+” (读写),“a/ab” (追加),“w/wb” (只写),“r/rb” (只读),“w+/wb+” (读写),“a+/ab+” (读写),为输入(读)打开一个文本/二进制文件(已存在的文件),为输出(写)打开或建立一个文本/二进制文件,为读/写打开一个文本/二进制文件,为读/写建立一个文本/二进制文件,为读/写打开或建立一个文本/二进制文件,向文本/二进制文件尾追加数据,文件使用方式 文本文件/二进制文件,含 义,P334,对一个文件的操作以前,必须首先打开该文件,使系统分配文件缓冲区,当文件操作结束后,关闭文件,收回分配的缓冲区。,关闭文件函数 fclose 作用:释放系统为该文件分配的缓冲区,使得文件指针与指向的文件断开。,fclose函数调用的一般形式:,功能:关闭文件指针指向的文件 返值:正常关闭为0;出错时,非0,fprintf(文件指针,格式控制符,输出表列) fscanf(文件指针,格式控制符,地址表列),功能:按格式对文件进行I/O操作 返值:成功,返回I/O的个数;出错或文件尾,返回EOF,P342,fprintf函数与fsanf函数的一般形式:,例:编程实现求任何两整数之和,并将其结果保存于文myf.txt中。,#include main() FILE *fp; int a,b,c; fp=fopen(myf.txt,w); scanf(%d%d, ,文件编程的实现:数据文件的打开、使用关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。,#include main() FILE *fp; 所用变量的数据类型的说明; if(fp=fopen(out.txt,w)=NULL) printf(cannot open filen); exit(0); 算法的实现及文件读写操作; fclose(fp); ,fp=fopen(out.txt,w),从键盘输入任意的一串字符,将字符串中的前导*号全部移到字符串的尾部(不能使用字符串复制函数strcpy())。 测试数据:*abcdef 输出结果:abcdef*,#include void fun(char a) int i,k=0,n=0; for(i=0;ai=*;i+) n+; for(i=n ;ai!=0;i+) ak+=ai; for(i=1;i=n;i+) ak+=*; ak=0; ,main() FILE *fp; char str79; fp=fopen(str.txt,w); gets(str); printf(%sn,str); fprintf(fp,%sn,str); fun(str); printf(%sn,str); fprintf(fp,%sn,str); fclose(fp); ,fputc函数调用形式: fputc(ch,fp); 功能:把一个字符写到fp指向的文件中 返回值:正常,返回c;出错,为EOF ( 值:-1),fgetc函数调用形式: ch=fgetc(fp); 功能:从fp指向的文件中读取一字符。 返回值:正常,返回读到的代码值;读到文件尾或出错,为EOF,P336,P336例13.1: 从键盘输入字符,逐个存到磁盘文件中,直到输入#“为止。,#include main() FILE *fp; char ch; if(fp=fopen(out.txt,w)=NULL) printf(“cannot open filen”); exit(0); printf(Please input string, # end:); while(ch=getchar()!=#) fputc(ch,fp); fclose(fp); ,fp=fopen(out.txt,w),P337例13.2: 将一个磁盘文件中的信息复制到另一个磁盘文件中。 (实现文件复制),测试文件结束函数:feof() (P374)该函数的功能是检查文件位置指针是否在文件结尾处,若是,则函数返回值为非0,否则返回0值,#include void main() FILE *in, *out; in=fopen(datain.txt, r); out=fopen(dataout.txt, w); while (!feof(in) fputc(fgetc(in), out); fclose(in); fclose(out); ,下面程序用来统计文件中字符的个数,请填空。 #include main() FILE *fp; long num=0; if(fp=fopen(D:TCz.c,r)=NULL) printf(Cant open file!n); exit(0); while(!feof(fp) _; num+; printf(num=%ldn,num); _; ,fclose(fp);,fgetc(fp),测试文件结束函数:feof() (P387)该函数的功能是检查文件位置指针是否在文件结尾处,若是,则函数返回值为非0,否则返回0值,s:可以是字符串常量,字符数组的首地址或字符型指针,P344,fputs函数调用形式: fputs(s,fp); 功能:向指定的文件输出一个字符串。 返回值:正常,0; 出错,为EOF 。,fgets函数调用形式: fgets(s,n,fp); 功能:从fp指向的文件中读出一个字符串并送入字符数组s中。n表示只读出n-1个字符。遇到换行符或EOF结束。 返回值:正常,返回字符串的首地址; 出错,NULL。,#include void main() FILE *f; char s80; f=fopen(c.txt ,w); fputs(Welcome to C!,f); fclose(f); f=fopen(c.txt ,r); fgets(s,8,f); puts(s); fclose(f); ,Welcome,rewind函数的用法: rewind(fp); 功能:重置文件位置指针到文件开头,5,注:所有文件打开时,文件指针都在文件的首部。,P344,#include void main() FILE *f; char s80; f=fopen(c.txt ,“r+); fprintf(f,Like); rewind(f); fgets(s,8,f); puts(s); fclose(f);,设文本文件“c.txt”的原有内容是“Welcome to C!”,则写出下列程序的执行结果。,w+、a+、r+的区别?,5,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号