C语言第十九讲课件.ppt

上传人(卖家):晟晟文业 文档编号:4688062 上传时间:2023-01-01 格式:PPT 页数:25 大小:160.72KB
下载 相关 举报
C语言第十九讲课件.ppt_第1页
第1页 / 共25页
C语言第十九讲课件.ppt_第2页
第2页 / 共25页
C语言第十九讲课件.ppt_第3页
第3页 / 共25页
C语言第十九讲课件.ppt_第4页
第4页 / 共25页
C语言第十九讲课件.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、 1 C语言电子教案(十九)语言电子教案(十九)第十九讲第十九讲 第十三章第十三章 文件文件l 主要内容:主要内容:l 13.1 13.1 文件的概念文件的概念l 13.2 13.2 文件类型的指针文件类型的指针l 13.3 13.3 文件的打开和关闭文件的打开和关闭l 13.4 13.4 文件的读写文件的读写l 13.5 13.5 文件的定位文件的定位 2 13.1 13.1 文件的概念文件的概念l 文件的创建方式:文件的创建方式:(1 1)通过文字处理软件或操作系统的文件管理功能;)通过文字处理软件或操作系统的文件管理功能;(2 2)通过程序语句创建。)通过程序语句创建。l 数据的输入和输

2、出:数据的输入和输出:在计算机中,数据的输入和输出都是在计算机中,数据的输入和输出都是相对于主机相对于主机(即内存)而言。将数据从磁盘文件或输入设备读(即内存)而言。将数据从磁盘文件或输入设备读入内存称为输入,从内存写到磁盘文件或输出设备入内存称为输入,从内存写到磁盘文件或输出设备称为输出。称为输出。3 一、文件的概念一、文件的概念l 文件文件:存储在外部介质:存储在外部介质(如如:软盘、硬盘、光盘等软盘、硬盘、光盘等)上的上的数据的集合。数据的集合。l 操作系统都是以文件为单位对数据进行管理的操作系统都是以文件为单位对数据进行管理的,文件又文件又是以文件名作为标识符。是以文件名作为标识符。l

3、 在程序设计中在程序设计中,有时需要将磁盘上的数据读入内存中有时需要将磁盘上的数据读入内存中,有有时需要将内存中的数据写入磁盘中时需要将内存中的数据写入磁盘中,这就要用到文件。这就要用到文件。如:我们可以将一个班的学生的考试成绩写入数据文件,如:我们可以将一个班的学生的考试成绩写入数据文件,这样在程序设计中,多个用户都可以使用这样的数据文这样在程序设计中,多个用户都可以使用这样的数据文件,而不必多次输入造成重复劳动。件,而不必多次输入造成重复劳动。4 二、文件的组织形式二、文件的组织形式l 文件可分为文件可分为ASCIIASCII码文件码文件和和二进制文件二进制文件。l ASCIIASCII文

4、件文件:又称为文本文件:又称为文本文件(.txt)(.txt)文件,其中每个字节文件,其中每个字节存放一个存放一个ASCIIASCII码字符。码字符。ASCIIASCII码文件占存储空间大码文件占存储空间大,且要花费时间转换且要花费时间转换(要进行二要进行二进制形式与进制形式与ASCIIASCII码形式之间的转换码形式之间的转换)l 二进制文件二进制文件:是将内存中的数据按在内存中的存储形式:是将内存中的数据按在内存中的存储形式原样输出到磁盘上存放。原样输出到磁盘上存放。二进制文件节省存储空间二进制文件节省存储空间,不需要转换不需要转换,但不能直接输出但不能直接输出字符形式字符形式,也就是说也

5、就是说,不能直观地显示文件的内容不能直观地显示文件的内容 5 二、文件的组织形式二、文件的组织形式如:整数如:整数10001000l 在在ASCIIASCII文件中文件中:按照:按照4 4个字符(个字符(1,0,0,01,0,0,0)存储,占存储,占4 4个字节。分别为:个字节。分别为:00110001 00110000 00110000 0011000000110001 00110000 00110000 001100001000=512+256+128+64+32+0+8+0+0+0 =(00000011 11101000)21 1 的的ASCIIASCII码值为码值为 49=32+16+

6、0+0+0+149=32+16+0+0+0+1l 在二进制文件中在二进制文件中:是按数据在内存中的存储形式:是按数据在内存中的存储形式(即按补码)存储的,占(即按补码)存储的,占2 2个字节,分别为:个字节,分别为:00000011 1110100000000011 11101000 6 13.2 13.2 指向文件的指针指向文件的指针l 指向文件的指针的定义:指向文件的指针的定义:FILE FILE*变量名变量名;如:如:FILE FILE*fpfp;则定义了指针变量则定义了指针变量fpfp是一个指向文件的指针。是一个指向文件的指针。l 注意:使用注意:使用FILEFILE定义指向文件的指针

7、时,必须包含头文件定义指向文件的指针时,必须包含头文件 stdiostdio.h.h 7 13.3 13.3 文件的打开和关闭文件的打开和关闭l 文件在使用之前,应当先打开,使用之后应将文件关闭,以文件在使用之前,应当先打开,使用之后应将文件关闭,以防数据被破坏。防数据被破坏。l 文件的打开和关闭是使用系统定义的函数来实现的。文件的打开和关闭是使用系统定义的函数来实现的。打开文件的函数是:打开文件的函数是:fopenfopen()()函数;函数;关闭文件的函数是:关闭文件的函数是:fclosefclose()()函数。函数。8 一、文件的打开一、文件的打开l 方法:方法:FILE FILE *

8、fp;fp;fp=fopenfp=fopen(文件名,打开方式)文件名,打开方式);l 文件的打开方式:文件的打开方式:r:r:文本文件文本文件只读只读w:w:文本文件文本文件只写只写a:a:文本文件文本文件追加追加 rbrb:二进制文件的只读二进制文件的只读r+:r+:二进制文件可读可写二进制文件可读可写打开文件并使指针打开文件并使指针指向文件首指向文件首打开文件并使指针打开文件并使指针指向文件首指向文件首打开文件并使指针打开文件并使指针指向文件尾指向文件尾 9 一、文件的打开一、文件的打开l 例如:例如:FILE FILE *fp;fp;fp=fopen(E:test.dat fp=fop

9、en(E:test.dat,ww);表示将表示将E E盘根目录下的盘根目录下的test.dattest.dat文件,按只写的方式打开。文件,按只写的方式打开。如果磁盘上有此文件,打开并将文件指针指向文件首;如如果磁盘上有此文件,打开并将文件指针指向文件首;如果磁盘上无此文件,创建一个新文件并打开。果磁盘上无此文件,创建一个新文件并打开。l 文件的打开的常用格式:文件的打开的常用格式:if(fp=fopen(aa,r)=NULL)if(fp=fopen(aa,r)=NULL)printf printf(cannot open this filen);(cannot open this filen

10、);exit(0);exit(0);10 二、文件的关闭二、文件的关闭l 方法:方法:fclosefclose(文件指针)文件指针);例如:例如:fclose(fpfclose(fp););将指针将指针fpfp指向的文件关闭。所谓文件关闭就是文件指指向的文件关闭。所谓文件关闭就是文件指针与文件的指向关系中断。针与文件的指向关系中断。11 13.4 13.4 文件的读文件的读写写l 打开文件后打开文件后,可对文件进行读写操作可对文件进行读写操作,对文件的读写操作包对文件的读写操作包括以下几种括以下几种:fgetc()函数:将一个字符由磁盘文件中读入到内存函数:将一个字符由磁盘文件中读入到内存fp

11、utc()函数:将一个字符写入磁盘文件函数:将一个字符写入磁盘文件fread()函数:将一组数据由磁盘文件读入到内存函数:将一组数据由磁盘文件读入到内存 fwrite()函数:将一组数据写入磁盘文件函数:将一组数据写入磁盘文件fscanf()函数:将一组数据由磁盘文件中读入到内存函数:将一组数据由磁盘文件中读入到内存fprintf()函数:将一个数据写入磁盘文件函数:将一个数据写入磁盘文件 12 13.4 13.4 文件的读写文件的读写l 由于由于CPU只能与内存有直接数据交换,因此读出文件中只能与内存有直接数据交换,因此读出文件中的数据不能直接从文件到屏幕,而文件的写入操作也不能的数据不能直

12、接从文件到屏幕,而文件的写入操作也不能直接由键盘到文件,必须经过内存才能进行。直接由键盘到文件,必须经过内存才能进行。l 文件的读入操作一般包括:文件的读入操作一般包括:先从文件读入到内存先从文件读入到内存再从内存中将数据显示到屏幕。再从内存中将数据显示到屏幕。l 文件的写入操作一般包括:文件的写入操作一般包括:先从键盘输入到内存先从键盘输入到内存再从内存写入到文件再从内存写入到文件 13 一、一、fgetc(getcfgetc(getc)函数函数磁盘文件字符输入函数磁盘文件字符输入函数l 调用格式调用格式:fgetc(fpfgetc(fp););l 功能功能:从从fpfp所指定的文件中读入一

13、个字符到内存。所指定的文件中读入一个字符到内存。l 返回值返回值:如果输入成功如果输入成功,返回所读入的字符返回所读入的字符;若输入若输入不成功不成功,则返回则返回EOF(-1)EOF(-1)14 二、二、fputc(putcfputc(putc)函数函数磁盘文件字符输出函数磁盘文件字符输出函数l 调用格式调用格式:fputc(ch,fpfputc(ch,fp););l 功能功能:将字符将字符chch写入写入fpfp所指定的数据文件中。所指定的数据文件中。l 返回值返回值:如果输入成功如果输入成功,返回所写入的字符返回所写入的字符;若输入若输入不成功不成功,则返回则返回EOF(-1);EOF(

14、-1);15 例例1 1 从键盘上输入一行字符写入从键盘上输入一行字符写入data1.datdata1.dat中,遇中,遇#结束结束#include stdio.hmain()FILE*fp;fp=fopen(data1.dat,w);ch=getchar();while(ch!=#)fputc(ch,fp);putchar(ch);ch=getchar();fclose(fp);定义指向文件的指针定义指向文件的指针打开文件,使打开文件,使fp指向文件指向文件从键盘到读入到内存从键盘到读入到内存从内存写入文件从内存写入文件输出到屏幕让用户观察输出到屏幕让用户观察从键盘到内存,为下次循环准备从键

15、盘到内存,为下次循环准备关闭文件关闭文件if(fp=fopen(data1.txt,w)=NULL)printf(cannot open this filen);exit(0);运行程序运行程序 16 三、三、freadfread()()函数函数磁盘文件输入函数磁盘文件输入函数l 调用格式调用格式:fread(p,size,n,fpfread(p,size,n,fp););l 功能功能:从从fpfp指定的文件中指定的文件中,读出连续读出连续n n个大小为个大小为sizesize的的数据项数据项,将这些数据项读到以将这些数据项读到以p p为起始地址的内存地为起始地址的内存地址中。址中。l 返回值

16、返回值:从从fpfp所指向的文件中读出的数据个数。所指向的文件中读出的数据个数。l 文件类型:二进制文件文件类型:二进制文件 17 四、四、fwritefwrite()()函数函数磁盘文件输出函数磁盘文件输出函数l 调用格式调用格式:fwrite(p,size,n,fpfwrite(p,size,n,fp););l 功能功能:将将p p所指定的内存地址作为起始地址所指定的内存地址作为起始地址,将连续将连续n n个大小为个大小为sizesize的数据项写入的数据项写入fpfp所指定的磁盘文件中。所指定的磁盘文件中。l 返回值返回值:写入写入fpfp所指向的文件中的所指向的文件中的数据个数数据个数

17、。l 文件类型:二进制文件文件类型:二进制文件 18 五、五、fscanffscanf()()函数函数磁盘文件输入函数磁盘文件输入函数l 调用格式调用格式:fscanf(fpfscanf(fp,格式字符串格式字符串,地址表列地址表列););l 功能功能:按格式字符串所指定的格式按格式字符串所指定的格式,将从将从fpfp所指定的所指定的文件中读入的数据写入的内存单元地址中文件中读入的数据写入的内存单元地址中,每输入一每输入一个数据个数据,指针向下移动若干字节。指针向下移动若干字节。l 文件类型:文件类型:ASCIIASCII码文件码文件 19 六、六、fprintffprintf()()函数函数

18、磁盘文件输出函数磁盘文件输出函数l 调用格式调用格式:fprintf(fpfprintf(fp,格式字符串格式字符串,输出项表输出项表););l 功能功能:按格式字符串指定的格式按格式字符串指定的格式,向向fpfp所指定的文件所指定的文件中写入数据中写入数据,每写入一个数据每写入一个数据,文件指针向下移动若文件指针向下移动若干字节。干字节。l 文件类型:文件类型:ASCIIASCII码文件码文件 20 13.5 13.5 文件的定位文件的定位l 文件中都有一个指针文件中都有一个指针,指向当前的读写位置,文指向当前的读写位置,文件每进行一次读写操作,文件指针就会自动指向件每进行一次读写操作,文件

19、指针就会自动指向下一个位置。下一个位置。l 如果想改变这种规律,就需要强制地使文件指针如果想改变这种规律,就需要强制地使文件指针指向特定的位置,需要使用相应的函数来实现。指向特定的位置,需要使用相应的函数来实现。21 一、一、rewind()rewind()函数函数 l 调用格式调用格式:rewind(fprewind(fp)l 功能功能:使使fpfp所指向的文件指针重新返回文件所指向的文件指针重新返回文件的开头。的开头。l 返回值:无返回值:无 22 二、二、ftellftell()()函数函数 l 调用格式调用格式:ftell(fpftell(fp)l 功能功能:返回返回fpfp所指向的文

20、件指针的当前位置。所指向的文件指针的当前位置。l 返回值:长整型,其值是文件指针相对于文返回值:长整型,其值是文件指针相对于文件头的字节数。件头的字节数。23 例例2 2 从键盘上输入从键盘上输入1010个整数写入个整数写入data2.datdata2.dat中并输出中并输出#include stdio.hmain()FILE*fp;int i,j,k;int a10,b10;fp=fopen(data2.dat,w+);for(i=0;i10;i+)scanf(%d,&ai);fwrite(a+i,sizeof(int),1,fp);for(i=0;i10;i+)fread(b+i,size

21、of(int),1,fp);printf(%6d,bi);printf(n);fclose(fp);定义指向文件的指针定义指向文件的指针打开文件,使打开文件,使fp指向文件指向文件从键盘到读入到内存从键盘到读入到内存从内存写入文件从内存写入文件从文件到内存从文件到内存从内存到屏幕,让用户观察从内存到屏幕,让用户观察关闭文件关闭文件运行程序运行程序rewind(fp);24 例例3 3 从键盘上输入从键盘上输入1010个整数写入个整数写入data3.datdata3.dat中并输出中并输出#include stdio.hmain()FILE*fp;int i,j,k;int a10,b10;fp

22、=fopen(data2.dat,w+);for(i=0;i10;i+)scanf(%d,&ai);fprintf(fp,%d,*(a+i);for(i=0;i10;i+)fscanf(fp,%d,b+i);printf(%6d,*(b+i);printf(n);fclose(fp);定义指向文件的指针定义指向文件的指针打开文件,使打开文件,使fp指向文件指向文件从键盘到读入到内存从键盘到读入到内存从内存写入文件从内存写入文件从文件到内存从文件到内存从内存到屏幕,让用户观察从内存到屏幕,让用户观察关闭文件关闭文件运行程序运行程序rewind(fp);25 例例4 4 将文件将文件file1.c

23、file1.c中的内容显示在屏幕上并写入文件中的内容显示在屏幕上并写入文件file2.cfile2.c中中#include“stdio.h”main()FILE*fp1,*fp2;fp1=fopen(“file1.c”,“r”);fp2=fopen(“file2.c”,“w”);while(!feof(fp1)putchar(getc(fp1);rewind(fp1);while(!feof(fp1)putc(getc(fp1),fp2);fclose(fp1);fclose(fp2);从从fp1所指文件读出字符并显示在屏幕上所指文件读出字符并显示在屏幕上使使fp1指向文件指向文件从从fp1所指文件读出字符并现写入所指文件读出字符并现写入fp2所指文件所指文件运行程序运行程序

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C语言第十九讲课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|