C语言程序设计 课件 第十章_第1页
C语言程序设计 课件 第十章_第2页
C语言程序设计 课件 第十章_第3页
C语言程序设计 课件 第十章_第4页
C语言程序设计 课件 第十章_第5页
已阅读5页,还剩20页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

3、 *fp; 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 将键盘输

5、入存储到文件中。#include stdio.h#include alloc.h#include process.hvoid 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=w

6、e; char mode=wb; 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(文件指针,格式字符串,输出

7、表列);fscanf(文件指针,格式字符串,输入表列);例10.4 创建文件TEST,从键盘上读进两个整数。编辑课件#include stdio.h#include process.hvoid main() FILE *f; int i,j; if (f=fopen(c:TEST,w) !=NULL) scanf(%d%d,&i,&j); fprintf(f,%d %d n,i,j); else exit(0); fclose(f);编辑课件例10.5:将文件TEST中将刚刚存储的两个整数显示在屏幕上。#include stdio.h#include process.hvoid main()

8、FILE *f; int i,j; if (f=fopen(c:TEST,r) !=NULL) fscanf(f,%d%d,&i,&j); printf(%d %d n,i,j); else printf(ncannot open filen);exit(0); fclose(f);编辑课件10.4.3fread函数与fwrite函数数据块的读入和写出。顺序文件。fread(datapointer,size,count,fp)fwrite(datapointer,size,count,fp) 其中,datapointer是读写存取数据的地址。读入数据时,把要读入的数据存放在它指定的区域。输出数

9、据时,从该地址指定的区域开始输出。size * count 读写的总字节数。fp 文件指针。count 正确调用后的返回值编辑课件例10.6:输出10个整型数到文件中。#include stdio.h#include process.hvoid main()static int a10=0,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); 可否一个整数一个整数的写?如何写?

10、编辑课件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(&ai,sizeof(int),1,f)!=1) printf(file write errorn); printf(nsucced!n); fclose(f);编辑课件例10.7在屏幕上显示TT文件中的十个整数。#include stdio.h#include process.hvoid main() int b10;

11、 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,temp; if (f=fopen(tt,rb)=NULL) exit(0); else if (fread(b,sizeof(int),10,f)!=

12、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) printf(file write errorn); printf(nsucced!n); fclose(f);编辑课件10.5文件的定位 随机文

13、件。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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论