ImageVerifierCode 换一换
你正在下载:

文件.ppt

[预览]
格式:PPT , 页数:29 ,大小:283.50KB ,
资源ID:1152660      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-1152660.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(文件.ppt)为本站会员(kuailexingkong)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

文件.ppt

1、1,CH13 文 件1 文件的概念,文件是二进制代码的,则文件就是字节流文件是ASCII码的,则文件就是字符流, 也是 字节流,ASCII码文件(文本文件)二进制文件,二、文件的组织结构:,一、文件分类,2,如:对于整型变量x,其值为32767。 若以文本方式存放,则共有5个字符,内容为: 00110011 00110010 00110111 00110110 00110111 3 2 7 6 7 若以二进制代码存放,则为: 01111111 111111117F FF,文本文件:易读懂、效率低、占存储空间较多;二进制文件:效率高、不易读懂。,三、C文件不受记录的约束 但为了阅读、打印,可在适

2、当的位置加入换行符n。,3,2 文件类型指针,一、文件的操作过程 打开/创建文件 读取/写入数据 关闭文件,对文件进行读写时需要知道:,文件状态、当前位置、缓冲区的有关信息等,4,二、与文件有关的信息,文件的有关信息用结构体类型FILE(在stdio.h中)描述,typedef structshort level;/* fill/empty level of buffer */unsigned flags;/* File status flags */char fd;/* File descriptor */unsigned char hold;/* Ungetc char if no buf

3、fer */short bsize; /* Buffer size */unsigned char *buffer;/* Data transfer buffer */unsigned char *curp;/* Current active pointer */unsigned istemp;/* Temporary file indicator */short token; /* Used for validity checking */ FILE;/* This is the FILE object */,5,三、定义指向文件的指针变量,FILE *指针变量名,如: FILE *fp,*

4、fq;一般,有n个文件就应设n个指针变量,用FILE来定义指针变量,6,一、打开文件:确定文件指针变量的指向,函数: fopen(文件名,使用文件方式),如:fp = fopen (a.dat, r);fq = fopen (b.dat, w );,功能:打开指定文件,确定操作模式,返回存放文件信息的结构体变量的首地址。若失败则返回空指针(NULL)。,3 文件的打开与关闭,7,方式 含义 r 为读打开一个文件 w 为写打开一个文件 a 向文件尾增添数据,方式 含义 rb 为读打开一个文件 wb 为写打开一个文件 ab 向文件尾增添数据,r+w+a+,说明:对方式a: 打开时fp指向文件尾其它

5、: 打开时fp指向文件头对方式r:文件必须存在,文本文件,二进制,为读/写打开一个文本文件,为读/写打开一个二进制文件,rb+wb+ab+,文件的使用方式:,8,如:fp=fopen(a.dat, r); /*为读打开一个已存在的文本文件*/,fq=fopen(w.dat, w); /*为写打开一个新的文本文件*/,fr=fopen(w.dat, wb); /*为写打开一个新的二进制文件*/fs=fopen(“t.dat”, w+); /*为读/写打开一个新的文本文件*/,9,三、关闭文件,fclose(文件指针变量名);,二、检测文件状态if ( ( fp = fopen(a.dat, r)

6、 = = NULL )printf(Cant open file.n); exit(0); ,如:fclose(fp);,10,4 文本文件的读写,一、fputc:把一个字符写到指定文件的当前位置,调用形式 :fputc (ch , fp); 如:fputc(A, fp);对照 putchar(A);fputc(c, fp); 二、fgetc:从指定文件的当前位置读一个字符 调用形式 :fgetc ( fp ) ;如:ch=fgetc( fp );对照 ch = getchar( );,11,4 文本文件的读写,三、feof:测试文件是否结束,如果是文件结束,函数feof(fp)的值为1(真)

7、,否则为0(假)。如:while( ! feof( fp ) )ch=fgetc( fp );putchar(ch);,fgetc(fp)函数带回一个字符,赋给ch,如果在执行fgetc时遇到文件结束符,函数返回一个文件结束标志EOF(-1),可以用: while(ch!=EOF),12,#include #include void main( )FILE *fp; char c, *fname = a.dat;if( (fp = fopen(fname, w) )=NULL)printf(Cant open file.n);exit(0); while( (c=getchar( ) ) !=

8、 EOF) fputc(c, fp);fclose(fp);,例1 读入一字符串(以Z结束),写入文件a.dat中,13,例2 把 a.dat 的内容复制到文件 b.dat 中,void main( )FILE *fa, *fb;char c, a20=a.dat, b20=b.dat;fa = fopen( a, r);fb = fopen( b, w);if( fa= =NULL | fb= =NULL)printf(Cant open file.n);exit(0); while( !feof( fa ) )c = fgetc( fa ); fputc(c, fb ); fclose(f

9、a);fclose(fb);,14,四、格式化输出 fprintf (文件指针,格式字符串,输出表列),按格式将输出表列的内容输出到指定的文件中。与printf的区别在于:,多一个参数;,向文件中写而不是屏幕。,如:fprintf (fp, a=%d,b=%dn, a, b);,15,五、格式化输入 fscanf(文件指针,格式串,输入表地址列) 如:fscanf ( fp, %d, 从指定文件中读一个整型数,送到下标为k的元素中。,16,例3 将N个同学某门课的成绩按每行8个写入文件score.dat中。,1. 打开文件score.dat;2. 写一行表头 C 语言成绩:;3. 将所有数据写

10、入文件中(用循环实现):如果下标能被8整除则换行;将第k个元素写到文件中;4. 关闭文件。,17,#include #include #define N 30void main( )FILE *fp; int k;int scoreN = 67, 87, 77, 99, 88, 66, 78, 89, 67,78, 76, 68, 47, 72, 94, 87, 98, 97, 96, 85, 96,92, 82, 73, 81, 82, 84, 78, 62, 55 ;if( ( fp = fopen ( score.dat , w) ) = = NULL )puts ( Cant open

11、 file. ); exit ( 0 ) ; fprintf ( fp , “C language score:” ) ;for ( k=0; kN; k+)if ( k % 8 =0 ) fprintf ( fp , n );fprintf ( fp , %4d, scorek);fclose(fp); ,18,例4A 从文件score.dat中读出数据、显示在屏幕上,并求平均值。,1. 打开文件score.dat;2. 读表头: 逐一读取字符,直到遇到换行符。3. 读数据: 只要文件未结束,就逐个读取整型数;4. 按每行8个输出到屏幕上,并求平均值,输出平均值;5. 关闭文件。,19,#i

12、nclude #include void main( )FILE *fp; int k = 0, score;char c; float sum=0;if( ( fp = fopen ( score.dat, r) ) = = NULL )puts ( Cant open file.) ;exit (0) ; while( ( c = fgetc( fp ) ) != n ,20,六、字符串的读写fputs(字符串,文件指针) fgets(字符串数组,n,文件指针),#include #include void main( )FILE *fp ;char c30, str30, ch;gets

13、( str );if( ( fp = fopen(str_file.dat, w)= =NULL)printf(Cant open file.n); exit(0); fputs( str, fp);fclose(fp);if( fp = fopen(str_file.dat, r)=NULL) printf(Cant open file.n); exit(0); if( !feof( fp ) ) fgets(c, 30, fp); puts(c); fclose(fp); ,例5,21,七、文件复位rewind( fp ) 将指针指向文件头,例6: 从键盘输入一个串,写到文件中;再从文件中

14、读出并显示。,1. 以写+读方式打开文件;2. 读一个串,写入文件中;3. 将指针指向文件头;5. 读串到字符数组中,并显示;6. 关闭文件。,22,#include #include void main( )FILE *fp;char s130, s230, ch; if( ( fp = fopen(d.dat, w+) = NULL) printf( Cant open file.n);exit(0); gets(s1);fputs ( s1, fp ) ;rewind ( fp ) ; if( !feof ( fp ) ) fgets( s2, 30, fp ); puts(s2); f

15、close( fp);,23,5 二进制文件的读写,一、fgetc、fputc和feof函数,例7 复制文件,#include void main( )FILE *fa, *fb;char a20=a.dat, b20=b1.dat;fa = fopen (a, rb);fb = fopen (b, wb);if( fa = = NULL | fb = = NULL)printf(Cant open file.n);exit(0); while( ! feof( fa ) ) fputc( fgetc( fa ), fb);fclose(fa);fclose(fb);,24,二、fread和f

16、write函数,fread (buffer, size, count, fp);fwrite (buffer, size, count, fp);,buffer:指针,用于存取数据size:所存取数据的长度count:一次存取的数据个数,例如:fread ( f , 4 , 2 , fp ) ;,25,#define N 5void main( )FILE *fp;int aN=1, 5, 7, 2, 3, bN, i;if( (fp = fopen(array.dat, wb) = NULL)printf(Cant open file.n); exit(0); fwrite ( a, siz

17、eof( int ), N, fp ) ;fclose( fp);if( (fp = fopen(array.dat, rb) = NULL)printf(Cant open file.n); exit(0); fread ( b, sizeof( int ), N, fp ) ;for( i=0; iN; i+) printf(%d , bi);printf( n);fclose( fp );,例8,26,用于控制指针位置,实现文件的随机存取。(详见教材324页),三、fseek函数,27,二、考试题型: 选择题、读程序、程序填空、编写程序,关 于 考 试,三、答疑: 时间: 24日和25日

18、全天答疑(上午8:00-11:00 下午3:00-5:00) 地点:计算机与通信工程学院2楼,一、 复习内容: 应熟悉课堂内容、并掌握基本算法,28,预祝同学们取得好成绩!,29,作业: (1)建立一个名为score.dat的文本文件,数据为4个同学5门课的成绩,格式如右:,4 567 87 89 77 8878 79 99 86 73 92 69 61 59 77 86 66 77 88 99,(3)建立一个名为result.dat的文件存放所有成绩、平均值及每个人的姓名和课程名。格式如下:name math phys English C Mech averageLi Li 67 87 89 77 80 78Sha Sha 88 78 79 99 88 90 average 81 76 80 74 78 84,(2)编一程序从文件score.dat中读出数据,求每门课的平均值和每个人的平均值;,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报