c语言现代程序设计第十章,C语言程序设计课件第十章(适于清华谭浩强版)

《C语言程序设计课件第十章(适于清华谭浩强版)》由会员分享,可在线阅读,更多相关《C语言程序设计课件第十章(适于清华谭浩强版)(25页珍藏版)》请在人人文库网上搜索。

1、第10章 文件 101 C文件概述 1011 概念 存储在外部介质上数据的集合,是操作系统管理数据的单位。 外部介质: 磁盘 (输入、输出都可) 终端键盘 输入文件 显示器 打印机 输出文件,1012 数据流 C语言把文件看作数据流。 字节的序列。 字节流或二进制流。 ASCII文件与二进制文件。 文件的存取单位:字节。 流式文件:把文件中的数据看成由字节组成的数据流,而不认为文件是 由记录构成的。,1013 缓冲文件系统与非缓冲文件系统 缓冲文件系统:系统自动为文件开辟存放文件的缓冲区,用于存放 文件的数据。缓冲区大小一般为512字节,是与外存进行数据交换的数据单位。又称高级(高层)输入输出。

2、系统。 非缓冲文件系统 :系统自动不提供缓冲区,需要编写程序设定缓冲区。又称低级(低层)输入输出系统。 书上图示。,10.2文件类型指针 要想对文件进行操作,首先必须为不同的文件定义不同的文件指针,然后通过这些指针操作文件。 定义方式 FILE *fp; 实际上,FILE是一种结构类型,用来描述文件有关信息。 定义了文件指针以后,意味着:开辟一个FILE结构的空间,用指针fp指向它。,10.3文件的打开与关闭 10.3.1 文件的打开 C语言的文件操作都用函数实现。 fopen()函数用来打开文件。 fp=fopen(文件名,使用文件方式); fp为已定义的文件指针。 例: FILE *fp;。

3、 fp=fopen(“A”,”r”); fp 指向要操作的文件。 fp与A文件具有对应的关系。,打开文件需要的信息 : 1、打开哪个文件 2、打开文件的方式 3、使用哪个文件指针 打开文件的文件名是字符串常量或变量。使用文件方式一般也要带双引号。 fopen返回一个指针,应该不为空, 为空表示文件打开失败。,正确打开文件的方式: if (fp=fopen(“A”,”r”)=NULL) printf(“cannot open this file n”); exit(0); else 文件处理; 文件的使用方式 : 书上,10.3.2文件的关闭 文件操作结束以后,需要释放文件指针,使文件指针与文件。

4、“脱钩”,关闭以后,不能再对该文件进行操作。 fclose函数 fclose(文件指针) 例如:fclose(fp); 文件操作的顺序: 打开处理关闭 保证文件操作的正常执行。 与缓冲区有关。,10.4 文件的读写 10.4.1fputc函数与fgetc函数 1、fputc() 调用方法:fputc(ch,fp) 功能:将ch的内容输出到fp所指的文件中,ch是单个字符。 #define putchar(c) fputc(c,stdout) 2、fgetc() 调用方法:fgetc(fp) 功能:从fp所指的文件中读单个字符作为返回值。,例10.1 将键盘输入存储到文件中。 #include 。

5、stdio.h #include alloc.h #include process.h void write_to() FILE *fp; char ch; fp=fopen(we,wb); if (fp=NULL) printf(cannot open file);exit(0); ch=getchar(); while (ch!=#) fputc(ch,fp); ch=getchar(); fclose(fp); ,void main() write_to(); 用fopen打开文件时可以使用字符串变量指定文件和读写方式 . . char filename=we; char mode=wb。

6、; FILE *fp; char ch; fp=fopen(filename,mode); .,例10.2 将刚才存储的文件在屏幕上显示。 void read_in() FILE *fp; char ch; fp=fopen(we,rb); if (fp=NULL) printf(cannot open file);exit(0); while (!feof(fp) ch=fgetc(fp);putchar(ch); ,10.4.2 fprintf函数与fscanf函数 与printf scanf的使用格式很相似。 fprintf(文件指针,格式字符串,输出表列); fscanf(文件指针,格。

7、式字符串,输入表列); 例10.4 创建文件TEST,从键盘上读进两个整数。,#include stdio.h #include process.h void main() FILE *f; int i,j; if (f=fopen(c:TEST,w) !=NULL) scanf(%d%d, ,例10.5:将文件TEST中将刚刚存储的两个整数显示在屏幕上。 #include stdio.h #include process.h void main() FILE *f; int i,j; if (f=fopen(c:TEST,r) !=NULL) fscanf(f,%d%d, ,10.4.3fr。

8、ead函数与fwrite函数 数据块的读入和写出。 顺序文件。 fread(datapointer,size,count,fp) fwrite(datapointer,size,count,fp) 其中,datapointer是读写存取数据的地址。读入数据时,把要读入的数据存放在它指定的区域。输出数据时,从该地址指定的区域开始输出。 size * count 读写的总字节数。 fp 文件指针。 count 正确调用后的返回值,例10.6:输出10个整型数到文件中。 #include stdio.h #include process.h void main() static int a10=0,。

9、1,2,3,4,5,6,7,8,9; FILE *f; if (f=fopen(TT,wb)=NULL) exit(0); else if (fwrite(a,sizeof(int),10,f)!=10) printf(file write errorn); fclose(f); 可否一个整数一个整数的写?如何写?,void main() int i; static int a10=0,1,2,14,15,1,6,7,8,9; FILE *f; if (f=fopen(”TT,wb)=NULL) exit(0); else for (i=0;i10;i+) if ( fwrite( ,例10.。

10、7在屏幕上显示TT文件中的十个整数。 #include stdio.h #include process.h void main() int b10; FILE *f;int i; if (f=fopen(c:TT,rb)=NULL) exit(0); else if (fread(b,sizeof(int),10,f)!=10) printf(file read errorn); for (i=0;i=9;i+) printf(%d , bi); fclose(f); ,例10.8 对文件进行排序。 void sort() int b10; FILE *f; int i,k,m,n,l,te。

11、mp; if (f=fopen(tt,rb)=NULL) exit(0); else if (fread(b,sizeof(int),10,f)!=10) printf(file read errorn); fclose(f); for (m=0;m9;m+) k=m; for (n=m+1;n10;n+) if (bnbk) k=n; if (k!=m) temp=bk;bk=bm;bm=temp; ,if (f=fopen(tt,wb)=NULL) exit(0); else for (i=0;i10;i+) if ( fwrite(b+i,sizeof(int),1,f)!=1) pri。

12、ntf(file write errorn); printf(nsucced!n); fclose(f); ,10.5文件的定位 随机文件。 10.5.1 rewind函数 格式:rewind(fp); 功能:文件的位置指针重新返回文件的开头。,10.5.2fseek函数 功能:移动文件的位置指针。 格式:fseek(fp,位移量,起始点); 0 :文件开始 1 :当前位置 2 :文件末尾 位移量:从起始点开始移动的字节数。 整数向前移动; 负数向后移动。,修改外排序算法 void sort() int b10; FILE *f; int i,k,m,n,l,temp; if (f=fopen(tt,rb+)=NULL) exit(0); else if (fread(b,sizeof(int),10,f)!=10) printf(file read errorn); for (m=0;m9;m+) k=m; for (n=m+1;n10;n+) if (bnbk) k=n; if (k!=m) temp=bk;bk=bm;bm=temp; ,rewind(f); for (i=0;i10;i+) if ( fwrite(。

你可能感兴趣的:(c语言现代程序设计第十章)